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

Я установил два jdk - 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 есть какие-то конфиги при установке?


person kamilz    schedule 20.12.2013    source источник


Ответы (13)


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

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

-Dbuild.compiler=javac1.7
person Kristian Holdhus    schedule 20.03.2014
comment
Я столкнулся с этой проблемой, и данный флаг (-Dbuild.compiler=javac1.7) работает и при передаче напрямую ant. - person cincodenada; 18.04.2014
comment
Ответ Кристиана правильный, мы могли бы добавить -Dbuild.compiler = javac1.7 при создании конфигурации запуска ant-launch в eclipse см. ‹bugs.eclipse.org/bugs/show_bug.cgi?id=409358 - person Shiva Achari; 11.05.2014
comment
Я нашел код. Они проверяют, используете ли вы Java 1.3 или ниже. Старый, старый код более десяти лет назад. Из-за этого Ant ломается каждый раз, когда Oracle выпускает новую версию 1.x. Ant уже требует 1.4 или выше. Им следует просто удалить эту проверку из кода. - person David W.; 10.07.2014
comment
@ David W - какого черта они не добавили поддержку Java 1.9 и 2.0, чтобы изменения действовали в течение следующих 6 или 8 лет. Скоро выйдет Java 9, и все снова сломается .... - person jww; 15.08.2014
comment
Ошибка была исправлена ​​в 2012 году для Eclipse Ant 1.9.0, но Ant в Eclipse Kepler (2014!) По-прежнему имеет версию 1.8.4, поэтому эта проблема все еще существует. Это улучшено в Luna или мы все еще ждем? (Я считаю, что веб-сайт Eclipse совершенно бесполезен для любого вида надлежащего отслеживания изменений и знания того, какие версии каких подключаемых модулей вошли в какие выпуски; есть ли это где-нибудь?) - person Stuart Rossiter; 14.01.2015
comment
Спасибо, просто нажмите на это с помощью ant на MacOS 10.8 во время тестирования обратной совместимости приложения. Обходного пути было достаточно, чтобы запустить сборку с версией 1.7. - person tresf; 15.11.2016
comment
Примечание. Эту ошибку можно обойти, используя ant 1.8.2, если по какой-то причине вам нужно придерживаться версий 1.8.X. Я пробовал с 1.8.4, и это не удалось, но с 1.8.2 все работало нормально. - person Brad Parks; 19.06.2017

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

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

person Chuck Daniels    schedule 28.01.2015
comment
Я, конечно, поддержал ответ Кристиана Холдуса. Однако я обнаружил, что это лучшее решение для моей ситуации. Вынуждая вызывающие стороны добавлять параметр -D, мы затрудняем доставку build.xml внешним пользователям. Нам также необходимо предоставить дополнительные инструкции по использованию, которые всегда чем меньше, тем лучше :) - person Rakesh N; 04.07.2016
comment
он работает, показывая заметки при создании [javac] warning: C:\Program Files\Java\jre1.8.0_152\lib\rt.jar(java/net/ConnectException.class): major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded. и т. д. - person aswzen; 01.02.2018

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

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

person Mike Kuenzi    schedule 24.10.2014

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, и все будет в порядке.

person Toni Toni Chopper    schedule 20.12.2013
comment
Но я не хочу использовать jdk1.8. Почему Ant пытается использовать компилятор 1.8 с такими настройками? - person kamilz; 20.12.2013
comment
Запустите сборку Ant с помощью команды «Запуск от имени» ›Ant Build ... затем откройте вкладку JRE и выберите среду выполнения JRE, которую вы хотите использовать для запуска сценария. - person Toni Toni Chopper; 20.12.2013
comment
Задача javac может генерировать байтовый код для более старых виртуальных машин. См. Атрибут target в документе: ant .apache.org / manual / Tasks / javac.html Java 1.5 не может генерировать байт-код для более поздних виртуальных машин. - person Mark O'Connor; 21.12.2013

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

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

> ant -version

Apache Ant (TM) версии 1.9.6, скомпилированный 29 июня 2015 г.

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

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

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

  1. Щелкните правой кнопкой мыши файл build.xml
  2. Беги как
  3. Конфигурации внешнего инструмента
  4. Выберите вкладку classpath

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

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

person KulDeep    schedule 07.11.2015
comment
На что вы изменили путь к ANT Home? - person IgorGanapolsky; 06.04.2016
comment
Привет, @IgorGanapolsky. Раньше путь к версии Ant был для Ant 1.8, который я обновил до последней версии Ant 1.9, как показано на изображении выше. И это сработало. Надеюсь, я ответил на ваш вопрос. - person KulDeep; 26.06.2016

Обновите Ant до версии 1.9.x, поскольку Java 8 несовместима с версиями Ant ниже 1.9.

person Neha Priya    schedule 11.02.2015

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

  1. Щелкните правой кнопкой мыши имя задачи муравья, например `myBuild.xml в окне муравья.

  2. Выберите Run As | External Tool Configurations.

  3. Затем на вкладке JRE выберите Separate JRE: Java JDK7 или другое имя вашего java 7.

  4. Нажмите «Применить», а затем «Выполнить».

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

person manchaw    schedule 26.01.2021

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

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

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

person Brad Parks    schedule 13.11.2015

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

выпуск муравья -Dbuild.compiler = javac1.7

person linhadiretalipe    schedule 03.12.2015

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

person Badal Singh    schedule 27.02.2017

Иногда проблема при построении войны с помощью ANT также связана с отсутствием совпадения версии Java в файлах build.properties, поскольку build.XML пытается использовать версию Java, указанную в свойстве build.compiler.

проверьте, совпадает ли свойство build.compiler с предполагаемой версией java.

person SoSufi    schedule 08.01.2018

Вы можете загрузить более новую версию eclipse, которая включает более новую версию Ant в каталоге плагинов. Затем скопируйте Ant jar в более старый каталог плагинов eclipse. Eclipse автоматически укажет на более новую версию Ant. Это сработало для более старого Kepler с более новым Mars2 для меня.

person techron    schedule 03.04.2019

У меня такая же проблема. И я смог решить эту проблему в build.xml, установив свойство.

<property "build.compiler=javac1.7">
person Pavan Dittakavi    schedule 03.06.2020