2017-02-27 73 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

相關問題