2017-02-27 2 views
1

Die Klasse in Frage ist sun.security.tools.KeyTool und ich benutze OpenJDK 7. Ich bekomme immer "kann nicht finden Symbol" obwohl, und ich bin kein Java-Experte, so kann ich nicht durch Dokumentation herausfinden, warum das sein könnte oder wenn es weg ist . Irgendwelche Ideen?Wie kann ich auf diese bestimmte Klasse zugreifen?

Genaue Fehlermeldung:

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

Code:

import sun.security.tools.KeyTool; 

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

Wie lautet Ihr Code? Was hast du probiert? Was ist die genaue Fehlermeldung, und wann bekommen Sie es? – AntonH

+0

@AntonH Ich bekomme es auf Kompilierung. Java-Version 1.7.0_131. Mein Code ist 'import sun.security.tools.KeyTool;' und eine leere Klasse. –

+0

@AntonH Ich fügte der Frage mehr Details hinzu, wenn es nicht klar war. –

Antwort

1

Versuchen javac -XDignore.symbol.file ... verwenden.

Standardmäßig beschränkt javac die Klassen, die den Benutzern zugänglich gemacht werden. Dies hilft Benutzern in der Regel zu vermeiden, dass sie versehentlich von (nicht unterstützten) Klassen abhängig sind, die keine öffentliche Java API sind, aber in der aktuellen JRE/JDK verfügbar sind. Die Liste der "sicheren" Klassen ist in der Datei ct.sym beschrieben. Die Systemeigenschaft ignorel.symbol.file weist javac an, diese Datei zu ignorieren und alle im JDK/JRE verfügbaren Klassen zu verwenden.

Und stellen Sie sicher, dass Sie tools.jar hinzufügen, wobei diese Klasse für den Klassenpfad für javac definiert ist.

+0

Wissen Sie, warum Sie tools.jar hinzufügen müssen? Wenn ich Java 8 verwende, funktioniert alles ohne den zusätzlichen Klassenpfad, obwohl ich '-XDignore.symbol.file' verwenden muss. Weißt du, warum diese Flagge auch benötigt wird? –

+0

Ich habe eine Erklärung von '-XDignore.symbol.file.' hinzugefügt. Wie für Oracle Java 8 vs OpenJDK 7 bin ich mir nicht sicher. Vergleichen Sie OpenJDK 8, um zu sehen, was es macht. Legen Sie die Umgebungsvariable '_JAVA_LAUNCHER_DEBUG' fest, um zu sehen, welche Klassen vom Launcher zum Klassenpfad hinzugefügt werden. – omajid

Verwandte Themen