有没有办法禁用 javac 1.6.0_22 的限制,这些限制阻止我使用 sun.awt.event.*
类的 JRE 内部类?
我 不是 在寻找:
- 解释为什么它被禁止。
- 建议使用不同的类
- 建议使用反射
- 建议使用 ecj/eclipse
我只是想知道这是否可能,如果可能的话。
原文由 Marcin Wisnicki 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法禁用 javac 1.6.0_22 的限制,这些限制阻止我使用 sun.awt.event.*
类的 JRE 内部类?
我 不是 在寻找:
我只是想知道这是否可能,如果可能的话。
原文由 Marcin Wisnicki 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用的是 Maven,除了@marcin-wisnicki 的回答之外, 请注意编译器插件将静默删除任何 -XD 标志,除非您还指定 <fork>true</fork>
:例如
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgs>
<arg>-XDignore.symbol.file</arg>
</compilerArgs>
<fork>true</fork>
</configuration>
...
原文由 karmakaze 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
我自己找到了答案。
当 javac 编译代码时,它默认不链接
rt.jar
。相反,它使用带有类存根的特殊符号文件lib/ct.sym
。令人惊讶的是,这个文件包含许多但不是所有的内部 sun 类。在我的例子中,其中一个比平常更内部的课程是
sun.awt.event.IgnorePaintEvent
。我的问题的答案是:
javac -XDignore.symbol.file
这就是 javac 用于编译
rt.jar
的内容。