在Javac中使用内部Sun类

有没有一种方法可以禁用Javac 1.6.0_22的限制,这些限制阻止我使用JRE内部类sun.awt.event.*

不是在寻找:

  1. 解释为什么它被禁止。

  2. 建议使用不同的班级

  3. 建议使用反射

  4. 建议使用ecj / eclipse

我只想知道是否有可能,是否有可能。


红糖糍粑
浏览 351回答 3
3回答

人到中年有点甜

我自己找到了答案。当javac编译代码时rt.jar,默认情况下它不会链接。而是使用lib/ct.sym带有类存根的特殊符号文件。令人惊讶的是,该文件包含许多但不是全部内部sun类。在我的情况下,这些内部比平常多的类是sun.awt.event.IgnorePaintEvent。我的问题的答案是: javac -XDignore.symbol.file这就是javac用于编译的内容rt.jar。

一只斗牛犬

如果您使用的是Maven,除了@ marcin-wisnicki的答案外,请注意,除非您另外指定,否则编译器插件将静默删除任何-XD标志, <fork>true</fork>例如:<build>&nbsp; &nbsp; <plugins>&nbsp; &nbsp; &nbsp; &nbsp; <plugin>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <groupId>org.apache.maven.plugins</groupId>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <artifactId>maven-compiler-plugin</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <version>3.3</version>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <configuration>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <source>1.7</source>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <target>1.7</target>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <compilerArgs>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <arg>-XDignore.symbol.file</arg>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </compilerArgs>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <fork>true</fork>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </configuration>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java