javac:无效标志:-Xlint:-sunapi | JDK 9

问题描述 投票:0回答:1

传递给

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 一起工作?


注意:为了简洁起见,删除了类路径。

javac java-9
1个回答
0
投票

无法使用

-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 中的内存访问方法以进行删除

© www.soinside.com 2019 - 2024. All rights reserved.