抑制Java警告“;“不安全是内部专有API”;使用Gradle在Groovy项目中构建

抑制Java警告“;“不安全是内部专有API”;使用Gradle在Groovy项目中构建,java,groovy,gradle,Java,Groovy,Gradle,我有一个使用Gradle(1.8)构建的Groovy项目,其中一些Java类报告以下编译器警告消息: warning: Unsafe is internal proprietary API and may be removed in a future release import sun.misc.Unsafe; 有没有办法抑制该错误消息?我发现一些答案建议使用javac编译器选项-XDignore.symbol.file,但在使用Groovy插件时,我无法在Gradle构建中应用它 有解决办

我有一个使用Gradle(1.8)构建的Groovy项目,其中一些Java类报告以下编译器警告消息:

warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe;
有没有办法抑制该错误消息?我发现一些答案建议使用javac编译器选项
-XDignore.symbol.file
,但在使用Groovy插件时,我无法在Gradle构建中应用它

有解决办法吗


谢谢

将以下内容添加到gradle.build文件中

compileJava {
    options.compilerArgs << '-XDignore.symbol.file'
    options.fork = true // may not needed on 1.8
    options.forkOptions.executable = 'javac' // may not needed on 1.8
}
compileJava{

options.compilerArgs为什么要使用不安全的
编译器?如果可能的话,避免直接依赖它是一个更好的选择。这是一些我不想/无法更改的旧代码。因此,我只想关闭该消息。的可能重复实际上并不重复,因为与
编译器Args相关:我仍然需要所有这些n 1.8/1.9.它所做的是强制Gradle使用命令行编译器。这是必要的,因为Java编译器API不支持
-XDignore.symbol.file
选项。请注意,使用命令行编译器可能会减慢生成(特别是多项目生成)。它不起作用。我仍然收到警告消息(s) 。由于它们是由“:compileGroovy”步骤生成的,那么应用于groovy编译器选项的CompilerArg难道不应该吗?事实上,这是可行的,但我不得不将Java源代码移到src/main/Java目录(而不是src/main/groovy)中。作为一个副作用,groovy编译失败,因为它没有“看到”java编译类。你没有提到你用groovy编译java文件。为什么你的java文件存储在groovy源代码文件夹中?Gradle构建假定有很多默认值,如果你做了一些奇怪的事情,你需要告诉Gradle。你没有提到你在使用联合编译。试着将源代码移回并替换
compileJava
和上面的
compileGroovy
。我不完全确定这些选项是否适用于联合编译,但值得一试。