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

関連する問題