2012-04-25 7 views
10

Sto usando JDK7 ed Eclipse Indiago in Windows 7 64-bit. Imposta la variabile di ambiente JAVA_HOME su F: \ JDK7 e aggiungo% JAVA_HOME% \ bin nel percorso. E 'il mio codice di esempio:No com.sun.tools.javac in JDK7

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

errore ottengo:

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

Perché non c'è com.sun.tools? Qual è il problema ?

enter image description here

risposta

25

Sembra che si stia utilizzando Eclipse. Per impostazione predefinita, Eclipse importa solo i jar JRE, non quelli del JDK.

Soluzione 1:

  1. Vai alla Eclipse preferenze (su Windows: Finestra -> Preferenze)
  2. Aprire la preferenza Java -> JRE installata
  3. Selezionare il JRE e premere Modifica
  4. Usa "Aggiungi vasi esterni" per includere il tools.jar (trovato in JDK_HOME/lib)

Soluzione 2:

Modificare il percorso di generazione del progetto e aggiungere una libreria esterna: tools.jar trovato in JDK_HOME/lib

+0

Dopo che ho fatto, come si said.There è un altro errore: 'Descrizione \t Resource \t Percorso \t Località \t tipo di restrizione di accesso : Il costruttore principale() non è accessibile a causa di restrizione libreria richiesta C: \ Program Files \ Java \ jdk1.7.0 \ lib \ tools.jar \t Compiler.java \t/imageJ/source/ij/plug-in \t riga 58 \t Java Problema ' – huoxudong125

+1

Controlla le impostazioni del compilatore in Eclipse. Probabilmente hai delle regole che dicono che l'API limitata dovrebbe essere segnalata come Errori (Finestra -> Preferenze -> Java -> Compilatore -> Errori/Avvertenze vedi la sezione su "API deprecata e limitata") –

7

Si sta meglio con il JavaCompiler API, piuttosto che attemtping chiamare javac direttamente che è in tools.jar L'API aggiungerà questo per voi, se lo si utilizza.

+0

Sotto 'lib' del tuo JDK. –

+0

Ho intenzione di compilare codice veramente vecchio stile. Hai ragione comunque. grazie – linker

0

javac si trova nella directory bin JDK, ma non il bidone JRE.

Ho avuto un problema simile e si è scoperto che per errore io avevo impostato la mia variabile JAVA_HOME alla JRE al posto del JDK, vale a dire,

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

Perché io "sapevo" che avevo copiato il corretto nome della directory, mi ci sono voluti anni per vedere quei due personaggi diversi e risolvere il problema.