Suppress Java warning “Unsafe is internal proprietary API” in Groovy project build with Gradle
我有一个用Gradle(1.8)构建的Groovy项目,其中一些Java类报告以下编译器警告消息:
1 2
| warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe; |
有没有办法抑制该错误消息? 我找到了一些建议使用javac编译器选项-XDignore.symbol.file的答案,但是使用Groovy插件时,我无法在Gradle构建中应用它。
有什么办法吗?
谢谢
-
为什么使用Unsafe? 如果可能的话,避免直接依赖它是一个更可取的选择。
-
这是一些我不想/不能更改的旧代码。 因此,我将关闭该消息。
-
在gradle中将参数传递给编译器和javadoc的可能重复项
-
实际上不是重复的,因为在我的情况下使用Groovy联合编译时compilerArgs << -XDignore.symbol.file不起作用。
-
相关:stackoverflow.com/questions/13855700/suppress-javac-warning
将以下内容添加到您的gradle.build文件中
1 2 3 4 5
| 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
} |
gradle 1.6上需要fork,不确定1.8左右
更新:1.8仍需要
-
在1.8 / 1.9中仍然需要所有这些。它的作用是强制Gradle使用命令行编译器。这是必需的,因为Java编译器API不支持-XDignore.symbol.file选项。请注意,使用命令行编译器可能会降低构建速度(尤其是多项目构建)。
-
它不起作用。我仍然收到警告消息。由于它们是由:compileGroovy步骤生成的,所以不应该将editorArgs应用于groovy编译器选项?
-
确实有效,但是我不得不将Java源代码移至src / main / java目录(而不是src / main / groovy)。副作用是,现在Groovy编译失败了,因为它没有"看到" java编译的类。
-
您没有提到使用groovy编译Java文件。为什么您的Java文件存储在groovy源文件夹中? Gradle构建会假设很多默认值,如果您做一些奇怪的事情,则需要对此说一声gradle。
-
将Java源代码移动到一个单独的文件夹(让我们说srcmainjava而不是srcmaingroovy),然后您建议使用的编译器选项起作用,但是常规编译失败,因为无法找到compileJava阶段编译的Java类。
-
您没有提到您正在使用联合编译。尝试将源移回,并将compileJava替换为上面的compileGroovy。我不确定这些选项是否适用于联合编译,但是值得一试。