3 回答
TA贡献1895条经验 获得超7个赞
我自己找到了答案。
当javac编译代码时rt.jar
,默认情况下它不会链接。而是使用lib/ct.sym
带有类存根的特殊符号文件。
令人惊讶的是,该文件包含许多但不是全部内部sun类。在我的情况下,这些内部比平常多的类是sun.awt.event.IgnorePaintEvent
。
我的问题的答案是: javac -XDignore.symbol.file
这就是javac用于编译的内容rt.jar
。
TA贡献1784条经验 获得超2个赞
如果您使用的是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>
...
添加回答
举报