Bu nadir yeterince sorun, ama ne zaman bu yapı başarısız olmasına yönelik gerçekten istiyorum:Kaynak kodunda UTF8 olmayan bir karakter olduğunda Gradle'ın yapıyı kesmesini nasıl sağlayabilirsiniz?
/Users/jundai/perforce/trunk/service/test/com/mycompany/PriceFormattingTests.java:93: error: unmappable character for encoding UTF-8
return new CurrencyModel("373959", new Price("10.20", "EUR"), "�10.20", new Price("12.10", "USD"), "$12.10");
Ant veya bu neden olacaktır -source 1.6
veya -source 1.7
kullanarak komut satırında javac
, koşu ile başarısız. Gradle kullanarak, error:
(sourceCompatibility
6 veya daha yüksek olarak ayarlanmışsa) olarak yazdırılır, ancak yapı hala başarılı olur.
Ben compileJava
görev için javac
komuta içine -source
argüman almanın çeşitli yolları denedim, ama denedim hiçbir şey bir başarısızlık olarak bildirmek Gradle elde edebilmek görünüyor.
Başkası buna karıştı mı?
DÜZENLEME: Bazı ek ayrıntılar:
Bir dosya winansi
kodlanmış varsa: src/main/java/Test.java
:
public class Test {
public static void main(String[] args) {
System.out.println("Testing UTF-8 compilation: C’est drôle, tout à coup je ne sais pas quoi dire.");
}
}
sonra bu hiçbir hata veya uyarı bu build.gradle
, Gradle 1.3 ve Java 1.7 kullanarak geçer :
apply plugin: 'java'
tasks.withType(Compile) {
options.encoding = "iso-8859-1"
}
Çıktı geçerli:
Benoptions.encoding
kaldırabilir veya
UTF-8
olarak ayarlarsanız
[1.9.3-p327] gradle$ gradle build
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
:check
:build
BUILD SUCCESSFUL
, ben olsun bu: sourceTypeCompatibility
1.6
, 1.5
arasında ve 1.7
Ayar
[1.9.3-p327] gradle$ gradle build
:compileJava
/Users/jbateskobashigawa/play/gradle/src/main/java/Test.java:3: error: unmappable character for encoding UTF8
System.out.println("Testing UTF-8 compilation: C�est dr�le, tout � coup je ne sais pas quoi dire.");
^
/Users/jbateskobashigawa/play/gradle/src/main/java/Test.java:3: error: unmappable character for encoding UTF8
System.out.println("Testing UTF-8 compilation: C�est dr�le, tout � coup je ne sais pas quoi dire.");
^
/Users/jbateskobashigawa/play/gradle/src/main/java/Test.java:3: error: unmappable character for encoding UTF8
System.out.println("Testing UTF-8 compilation: C�est dr�le, tout � coup je ne sais pas quoi dire.");
^
:processResources UP-TO-DATE
... (more stuff)
BUILD SUCCESSFUL
çok yapmak gibi görünmüyor. , javac
üzerinde -source
kullanırken, warning:
numaralı hatayı döndürür. Gradle ile, hala bir error:
, ancak ilginç bir şekilde, bir sonraki derlemede yeniden derlenmiyor, oysa 1.6
ve 1.7
ile. ,
options.compilerArgs < '-source 1.7'
Kurar
:Ben Gradle inşa edildiğinde javactır içine -source
geçmek denemek için yollar her türlü denedim, ama bunların hiçbiri çalışmıyor gibi görünüyor:
inşa etmez ancak (bayrağı olmadan aynı) dışarı hata değildir:
options.compilerArgs << '-source'
options.compilerArgs << '1.7'
Bütün bunlar Gradle aslındakullanmıyor gerçeği ile ilgili bir şey var gibi görünüyor Derlemek için 10 adet yürütülebilir - içinde çok fazla çapraşık kod bulunan bir çeşit JVM derleme API'sini kullanıyor.Ben Gradle yapıyor gibi görünüyor çoğaltabiliyorsanız çalışırsanız, ben şöyle benim sınıf derlemek için bir sınıf oluşturabilirsiniz: javax/tools/CompileTest.java
Sen bu mini projeyi kullanarak sorunu yeniden edebilirsiniz: https://github.com/Jun-Dai/gradle_utf8_compilation_issue
kimseyi mu Bu problemin bir yolunu biliyorsunuz, Gradle derleme çıktısını ayrıştırmaktan ve bu belirli hata mesajını temel alarak yapı hatalarını çözmekten kısa bir süre sonra?
android {
compileOptions.encoding = "UTF-8"
}
Bir çözüm buldunuz mu? –
Ne yazık ki değil. Periyodik olarak yapım çıktısına bakıyorum ve yukarıdaki uyarıyı görürsem el ile bunu düzeltiyorum. Sanırım bu sorun, aslında çok sayıda geliştiricinin bulunduğu büyük bir kod tabanı üzerinde bile uygulanabilir bir çözüm olduğu için nadirdir. –
Sorunumu sadece android {compileOptions.encoding = "Cp1252" –