Класс javac1.8 не найден

Я установил два jdks - jdk 1.5 и jdk 1.8. У меня есть следующий конфигурационный файл Ant build.xml:

<target name="compileCustomSrc">
    <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5" >
        <classpath>
            <fileset dir="C:/lib/">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

Перед установкой jdk1.8, Ant, вызванный из Eclipse, скомпилировал все источники успешно. Но теперь у меня есть сообщение об ошибке:

Class not found: javac1.8

Мой JAVA_HOME и JRE_HOME:

JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

и установите в Eclipse JRE значение 1.5. Включает ли Java 1.8 некоторые конфигурации во время установки?

Ответ 1

Class not found: javac1.8

Эта ошибка, как известно, происходит с версиями Apache Ant, меньшими 1.9.0, которые не совместимы с Java 8. Если вы используете версию Ant < 1.9.0, вы должны обновить до версии 1.9.x.

Вот связанный отчет об ошибке: https://issues.apache.org/bugzilla/show_bug.cgi?id=53347

Btw, если вы просто хотите скомпилировать с Java 8, но не нужно компилировать какой-либо фактический синтаксис Java 8, тогда вы можете передать следующий аргумент javac в качестве обходного пути, который позволяют продолжить использование более старой версии Ant:

-Dbuild.compiler=javac1.7

Ответ 2

Как продолжение ответа Kristian Holdhus (помечено как правильно), вы можете вместо этого использовать атрибут compiler в Ant javac task. Настройка compiler="modern" должна быть как обратной (еще в 1.3), так и передовой совместимой.

Это позволяет избежать необходимости устанавливать свойство Java System с именем build.compiler. Только при отсутствии явной установки атрибута compiler в задаче javac будет Ant использовать значение build.compiler в качестве резервной копии.

Ответ 3

У меня была такая же проблема. Я правильно установил JAVA_HOME и JRE_HOME. У меня также был Ant > 1.9.

Что я сделал, чтобы исправить это, перейдите в Eclipse в Window → Preferences. Разверните Ant и выберите Runtime. По умолчанию следует выбрать вкладку Classpath, а с правой стороны - кнопку Ant Home ". Нажмите эту кнопку и дважды проверьте, указана ли ваша папка Ant.

Ответ 4

JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

Ваши JAVA_HOME и JRE_HOME настроены на установку Java 1.5, поэтому 1.8 двоичные файлы (например, javac) не найдены. Установите их на установку Java 1.8, и все будет в порядке.

Ответ 5

Я попробовал это с Eclise и получил ту же ошибку Класс не найден: javac1.8

Я проверил версию ANT в моей системе

ant -версия

Apache Ant (TM) версия 1.9.6, составленная 29 июня 2015 года

Когда я попытался запустить build.xml из командной строки, он сработал. Затем я проверил, что в Eclipse он ссылался на более раннюю версию ANT.

Я просто редактировал путь ANT HOME в Eclipse, и он тоже работал отсюда.:)

Ниже приведено изображение, где нужно отредактировать путь ANT в Eclipse.

  • Щелкните правой кнопкой мыши файл build.xml
  • Запуск от
  • Внешние конфигурации инструментов
  • Выберите вкладку classpath

Теперь измените путь ANT Home здесь.

введите описание изображения здесь

Ответ 6

Обновить Ant до версии 1.9.x как Java 8 в несовместимой с версиями Ant менее 1,9

Ответ 7

Я пробовал все другие решения, но никто не работал. Наконец, я нашел подход, который работал у меня в Eclipse:

  • Щелкните правой кнопкой мыши имя задачи ant, например. "compileCustomSrc" в окне ant.
  • Выберите Run As | External Tool Configurations
  • Затем на вкладке JRE выберите Separate JRE: Java SE7 или независимо от имени вашего java 7, затем нажмите Apply, а затем Run.

Ваша задача ant будет выполнена и будет построена правильно!

Ответ 8

Обновить Ant до версии 1.9.x как Java 8 в несовместимой с версиями Ant менее 1,9 или после комманда put -Dbuild.compiler = javac1.7, см. ниже:

ant release -Dbuild.compiler = javac1.7

Ответ 9

вы можете загружать и распаковывать ANT 1.10 в вашей системе и пытаться подключить ANT home в eclipse для вашего проекта до 1.10. Он должен работать, прочитайте это для более подробной информации. http://devops-badal.blogspot.com/2017/02/class-not-found-javac18-issue-while.html