2012-04-25 61 views
10

Windows 7 64-bit'te JDK7 ve Eclipse Indiago kullanıyorum. JAVA_HOME ortam değişkenini F: \ JDK7 olarak ayarlıyorum ve yola% JAVA_HOME% \ bin ekleyin. Ben olsunJDK7'de com.sun.tools.javac yok

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

Hata:

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

Neden hiç com.sun.tools yoktur Benim örnek kod var? Sorun ne ?

enter image description here

cevap

25

Eclipse kullanıyorsunuz. Varsayılan olarak Eclipse, yalnızca JRE kavanozlarını içe aktarır, JDK'lardan değil.

Çözüm 1:

  1. Git tercihlerini Eclipse (Windows: Pencere -> Tercihler)
  2. Açık tercihi Java -> Yüklü JREs
  3. sizin JRE ve basın düzenlemeyi seçin
  4. kullanın tools.jar içerecek şekilde "dış kavanozları ekle"

Çözüm 2 (/ lib JDK_HOME bulunan):

012 Proje oluşturma yolu ve harici kitaplık eklemek

Düzenleme: tools.jar/lib

+0

Dediğiniz gibi yaptım. Başka bir hata var: 'Açıklama \t Kaynak \t Yol \t Konum \t Tip Erişim kısıtlaması: Yapılandırıcı Main(), gerekli kütüphanedeki kısıtlama nedeniyle erişilemiyor C: \ Program Files \ Java \ jdk1.7.0 \ lib \ tools.jar \t Compiler.java \t/imageJ/source/ij/plugin \t satır 58 \t Java Sorunu ' – huoxudong125

+1

Eclipse'de derleyici ayarlarını kontrol edin. Kısıtlı API'nin "Hatalar (Pencere -> Tercihler -> Java -> Derleyici -> Hatalar/Uyarılar" olarak "Eksik ve kısıtlı API" bölümüne bakın) olarak bildirilmesi gerektiğini belirten bazı kurallarınız vardır. –

7

Sen JavaCompiler API kullanarak yerine bunu kullanırsanız sizin için bu katacak tools.jar API olan doğrudan javac aramaya attemtping daha iyi.

+0

JDK'nızın '' lib'unun altında. –

+0

Gerçekten eski stil kodunu derleyeceğim. Yine de haklısın. teşekkürler – linker

0

Javac JDK_HOME bulunan JRE bin JDK bin dizininde olduğunu, ancak.

Ben benzer bir sorun vardı ve ben doğru kopyalanmış olduğunu "bilen" Çünkü

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

, yanlışlıkla ben yani JRE yerine JDK, benim java_home değişkeni batmıştı ortaya çıktı dizin adı, bu iki farklı karakteri görmek ve sorunu çözmek için çağlar aldı.

İlgili konular