代码之家  ›  专栏  ›  技术社区  ›  Marcin Wisnicki

在javac中使用内部sun类

  •  48
  • Marcin Wisnicki  · 技术社区  · 14 年前

    有没有办法禁用javac 1.6.0u22的限制来阻止我使用JRE内部类,比如 sun.awt.event.* ?

    我是 寻找:

    1. 建议使用不同的类
    2. 使用ecj/eclipse的建议

    我只想知道这是否可能,如果是,然后如何。

    4 回复  |  直到 14 年前
        1
  •  89
  •   Marcin Wisnicki    14 年前

    我自己找到了答案。

    当javac编译代码时,它不会链接到 rt.jar 默认情况下。 lib/ct.sym 带着班级的学生存根。

    在我的案例中,其中一个比平时更内部的课程是 sun.awt.event.IgnorePaintEvent .

    javac -XDignore.symbol.file

    基础类库 .

        2
  •  37
  •   davidxxx    6 年前

    除了@marcin wisnicki的答案,如果你用的是Maven, note that the compiler plugin will silently drop any -XD flags ,除非您还指定 <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>
                ...
    
        3
  •  0
  •   Stephen C    14 年前

    [javac] /media/disk/opensso2/opensso/products/federation/openfm/source/com/sun/identity/wss/xmlsig/WSSSignatureProvider.java:46: warning: com.sun.org.apache.xpath.internal.XPathAPI is Sun proprietary API and may be removed in a future release
    [javac] import com.sun.org.apache.xpath.internal.XPathAPI;
    

    也许您已经告诉Java编译器将警告视为错误。

        4
  •  0
  •   juancn    7 年前

    有更好的解决办法。首先将选项添加到javac -XDenableSunApiLintControl 然后使用 @SupressWarnings("sunapi")