2017-02-27 49 views
1

有问题的类是sun.security.tools.KeyTool,我正在使用OpenJDK 7.虽然我一直在收到“找不到符号”,但我并不是Java专家,所以我无法弄清楚为什么会出现这种情况或者它是否已经消失。有任何想法吗?如何访问这个特定的类?

确切的错误信息:

Main.java:1: error: cannot find symbol 
import sun.security.tools.KeyTool; 
         ^
    symbol: class KeyTool 
    location: package sun.security.tools 

代码:

import sun.security.tools.KeyTool; 

public class Main { 
    public static void main(String[] args) { 
    } 
} 
+1

你的代码是什么?你有什么尝试?什么是确切的错误信息,你什么时候得到它? – AntonH

+0

@AntonH我在编译时获得它。 javac版本1.7.0_131。我的代码是'import sun.security.tools.KeyTool;'和一个空的类。 –

+0

@AntonH如果不清楚,我在问题中添加了更多细节。 –

回答

1

尝试使用javac -XDignore.symbol.file ...

默认javac限制它向用户公开的类。这通常可以帮助用户避免意外取决于(不受支持的)不属于公共Java API但恰好在当前JRE/JDK中可用的类。 ct.sym文件中描述了“安全”类的列表。系统属性ignorel.symbol.file告诉javac忽略该文件并利用JDK/JRE中可用的所有类。

并确保您添加tools.jar,其中此类定义为javac的类路径。

+0

您是否知道为什么需要添加tools.jar?当我使用Java 8时,没有额外的类路径,一切正常,尽管我必须使用-XDignore.symbol.file。你知道为什么还需要这个标志吗? –

+0

我添加了一个'-XDignore.symbol.file.'的解释。至于Oracle Java 8和OpenJDK 7,我不确定。比较OpenJDK 8以查看它的功能。设置'_JAVA_LAUNCHER_DEBUG'环境变量以查看启动器将哪些类添加到类路径中。 – omajid

相关问题