Нет com.sun.tools.javac в JDK7

Я использую JDK7 и Eclipse Indiago в 64-битной Windows 7. Я устанавливаю переменную среды JAVA_HOME в F:\JDK7 и добавляю% JAVA_HOME%\bin в путь. Это мой пример кода:

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

Ошибка, которую я получаю:

Тип com.sun.tools не может быть преобразован в тип

Почему нет com.sun.tools? В чем проблема?

enter image description here

Ответ 1

Похоже, вы используете Eclipse. По умолчанию Eclipse импортирует JRE jars, а не JDK.

Решение 1:

  • Перейдите к настройкам Eclipse (в Windows: Окно → Настройки)
  • Откройте предпочтение Java → Установленные JRE
  • Выберите свою JRE и нажмите править
  • Используйте "Добавить внешние банки", чтобы включить tools.jar(находится в JDK_HOME/lib)

Решение 2:

Измените путь сборки проекта и добавьте внешнюю библиотеку: tools.jar, найденный в JDK_HOME/lib

Ответ 2

Вам лучше использовать API JavaCompiler, вместо того, чтобы обращаться непосредственно к вызову javac, который находится в tools.jar. API добавит это для вас, если вы его используете.

Ответ 3

javac находится в каталоге bin JDK, но не в ящике JRE.

У меня была аналогичная проблема, и оказалось, что по ошибке я установил переменную JAVA_HOME в JRE вместо JDK, т.е.

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

Поскольку я "знал", что я скопировал правильное имя каталога, мне потребовались годы, чтобы увидеть эти два разных символа и устранить проблему.