传递给
javac
的参数如下:
[javac] Using modern compiler
[javac] Compilation arguments:
[javac] '-deprecation'
[javac] '-d'
[javac] '..'
[javac] '-classpath'
[javac] '..'
[javac] '-sourcepath'
[javac] '..'
[javac] '-g'
[javac] '-XDenableSunApiLintControl'
[javac] '-Xlint:-sunapi'
这会导致错误:
[javac] javac: invalid flag: -Xlint:-sunapi
通过
-XDenableSunApiLintControl -Xlint:-sunapi
可以与 JDK 8 及更低版本一起使用。我如何让它与 Java 9 一起工作?
注意:为了简洁起见,删除了类路径。
无法使用
-Xlint:
在 Java 9 及更高版本上配置这些诊断,删除对 -XDenableSunApiLintControl
支持的更改是 https://bugs.openjdk.org/browse/JDK-8148808
举个例子
class T {
sun.misc.Unsafe theUnsafe;
}
没有受支持的方法来抑制诊断:
$ javac T.java
T.java:2: warning: Unsafe is internal proprietary API and may be removed in a future release
sun.misc.Unsafe theUnsafe;
^
1 warning
首选解决方案是迁移内部 API。这是首选选项,并且在删除内部 API 时可能会在未来的 JDK 版本中成为强制选项:JEP 471:弃用 sun.misc.Unsafe 中的内存访问方法以进行删除