这是一个非常罕见的问题,但我真的希望它在发生这种情况时使构建失败:
/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或在命令行上运行javac
时,使用-source 1.6
或-source 1.7
将导致失败。使用Gradle,它会打印出错误:
(如果SourceCompatibility
设置为6或更高),但生成仍然成功。
我尝试了各种方法将-source
参数导入javac
命令,用于compilejava
任务,但我尝试的任何方法似乎都无法让Gradle将此报告为失败。
还有其他人碰到过这个吗?
编辑:一些更多详细信息:
如果我有一个用winansi
: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.");
}
}
则使用以下build.Gradle
、Gradle 1.3和Java 1.7,此操作通过时不会出现错误或警告:
apply plugin: 'java'
tasks.withType(Compile) {
options.encoding = "iso-8859-1"
}
输出为:
[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
如果删除options.encoding
,或将其设置为UTF-8
,将得到以下结果:
[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
在1.5
、1.6
和1.7
之间设置SourceTypeCompatibility
似乎作用不大。1.5
,在javac
上使用-source
时,将错误变为警告:
。对于Gradle,它仍然是一个错误:
,但有趣的是,它不会在下一个构建中重新编译,而对于1.6
和1.7
它会重新编译。
在Gradle构建时,我尝试了各种方法将-source
传递到javac中,但似乎都不起作用:
不生成:
options.compilerArgs < '-source 1.7'
生成,但不会出错(与没有标志时相同):
options.compilerArgs << '-source'
options.compilerArgs << '1.7'
所有这些似乎都与Gradle实际上并没有使用javac
可执行文件进行编译有关--它使用的是某种JVM编译API,其中有很多非常复杂的代码。如果我尝试复制Gradle似乎正在做的事情,我可以创建一个类来编译我的类,它看起来像这样:javax/tools/compiletest.java
您可以使用以下迷你项目再现问题:https://github.com/jun-dai/gradle_utf8_compilation_issue
除了解析Gradle构建输出和基于特定错误消息的构建失败之外,有没有人知道解决这个问题的方法?
问题内容: 我有一些来自json文件的文本。在本文中,我应用了UTF8编码,但是该编码器无法识别非标准字符,并且为大写字符,是否有一种方法可以净化我的字符串? 我的功能: 问题答案: 我找到了解决方案。 UTF8采用8位表ASCII表,而UTF16采用16位ASCII表,解决方案很简单,只需将函数修改为:
无法生成ionic cordova build android--prod配置项目时出现问题:app'。 未指定compileSdkVersion。请将其添加到构建中。格拉德尔 build.gradle(app) /*根据一个或多个投稿者许可协议授权给Apache软件基金会(ASF)。有关版权所有权的更多信息,请参阅随本作品一起分发的通知文件。ASF根据Apache许可证2.0版(以下简称“许可证
系统详细信息: MacOS High Sierra 禁用IPv6 个人网络(无公司网络、防火墙、代理等) 每次间隔几分钟后,我都多次尝试此命令。在尝试使用选项构建后,我得到了同样的错误。 不确定是否是连接失败的结果[IP:..]错误或者它有其他原因。这个解决方案也没有帮助。有什么指示吗?
我们定制了一个产品,其中包括他们自己的phpunit测试套件。在Jenkins中,我有两个工作设置:第一个工作运行我们自己的测试套件,覆盖我们的定制,第二个工作运行现有的核心单元测试。
我使用的是Unity 2019.3.3f1个人版,当我尝试构建64位时,我遇到了212个错误。我认为这是最重要的一个,所以我只是粘贴这些: 命令InvokationFailure: Gradle构建失败。C:/程序文件/统一/集线器/编辑器/2019.3.3f1/编辑器/数据/播放引擎/Android玩家\OpenJDK\bin\java.exe-classpath"C:\程序文件\统一\集线器\
问题内容: 我在Ubuntu上使用Android Studio。我启动了Android Studio,创建了一个“新项目”,并从开始。它引发了以下错误: 它还显示了一个带有圆圈的PNG文件和一个透明背景,文件名为: 在我再次尝试运行该应用程序之后,我现在有2个错误,而不是一个: 您能否帮助我解决问题? 问题答案: Android尚未为64位ubuntu构建SDK,从错误中我可以说您正在64位OS上