2012-04-25 11 views
10

Ich benutze JDK7 und Eclipse Indiago in Windows 7 64-Bit. Ich setze die Umgebungsvariable JAVA_HOME auf F: \ JDK7 und füge% JAVA_HOME% \ bin in den Pfad ein. Es ist mein Beispielcode:Nein com.sun.tools.javac in JDK7

com.sun.tools.javac.Main m1 = new com.sun.tools.javac.Main(); 
m1.compile(source); 

Fehler erhalte ich:

Type com.sun.tools cannot be resolved to a type

Warum gibt es keine com.sun.tools? Was ist das Problem ?

enter image description here

Antwort

25

Es sieht so aus, als ob Sie Eclipse verwenden. Standardmäßig importiert Eclipse nur JRE-Jars, nicht die JDKs.

Lösung 1:

  1. Go Präferenzen Eclipse (unter Windows: Fenster -> Einstellungen)
  2. Öffnen Sie die Präferenz Java -> Installierte JREs
  3. Wählen Sie Ihre JRE und drücken Sie bearbeiten
  4. Verwendung "hinzufügen externen Gläser" die tools.jar enthalten (in JDK_HOME/lib)

Lösung 2:

Bearbeiten Sie Ihr Projekt Build-Pfad und eine externe Bibliothek hinzufügen: tools.jar in JDK_HOME/lib ist

gefunden
+0

Nachdem ich getan habe, wie Sie sagten.Es gibt einen anderen Fehler: 'Beschreibung \t Ressource \t Pfad \t Position \t Typ Zugriffseinschränkung: Der Konstruktor Main() ist nicht zugänglich aufgrund der Einschränkung für die erforderliche Bibliothek C: \ Programme \ Java \ jdk1.7.0 \ lib \ tools.jar \t Compiler.java \t/imageJ/source/ij/plugin \t Zeile 58 \t Java Problem ' – huoxudong125

+1

Überprüfen Sie die Compilereinstellungen in Eclipse. Sie haben wahrscheinlich einige Regeln, die besagen, dass die eingeschränkte API als Fehler gemeldet werden sollte (Fenster -> Einstellungen -> Java -> Compiler -> Fehler/Warnungen siehe Abschnitt "Veraltete und eingeschränkte API") –

7

Sie sind besser dran, die JavaCompiler API, anstatt attemtping Javac direkt zu nennen, die in tools.jar Die API ist, wird dies für Sie hinzufügen, wenn Sie es verwenden.

+0

Unter 'lib' Ihres JDK. –

+0

Ich werde wirklich alten Stil Code kompilieren. Du hast trotzdem Recht. Danke – linker

0

javac im Verzeichnis ist JDK, aber nicht das ist JRE.

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass ich versehentlich auf die JRE meine Variable JAVA_HOME gesetzt hatte, anstelle des JDK, dh

C:\Program Files\Java\jre1.8.0_60 instead of 
C:\Program Files\Java\jdk1.8.0_60 

Weil ich „wusste“, dass ich die richtige kopiert hatte Verzeichnisname, ich brauchte Ewigkeiten, um diese zwei verschiedenen Charaktere zu sehen und das Problem zu beheben.