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


80

Я встановив два 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, зібрав усі джерела успішно. Але зараз у мене є таке повідомлення про помилку:

Класу не знайдено: javac1.8

Мої JAVA_HOME та JRE_HOME:

JAVA_HOME = C: \ Файли програм (x86) \ Java \ jdk1.5.0_16
JRE_HOME = C: \ Program Files (x86) \ Java \ jre1.5.0_16

і встановіть в Eclipse JRE 1,5. Чи встановлює Java 1.8 деякі конфігурації під час інсталяції?

Відповіді:


173
Класу не знайдено: 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

9
Я зіткнувся з цією проблемою, і даний прапор ( -Dbuild.compiler=javac1.7) працює, коли його також передають безпосередньо ant.
cincodenada

Відповідь Крістіана правильна, ми могли б додати -Dbuild.compiler = javac1.7 під час створення конфігурації запуску мурашок у eclipse див. < Bugs.eclipse.org/bugs/show_bug.cgi?id=409358 >
Шива Ачарі

5
Я знайшов код . Вони перевіряють, чи використовуєте ви Java 1.3 або нижче. Старий, старий код понад десятиліття тому. Через це Ant щоразу зривається, коли Oracle виходить з новою версією 1.x. Мураха вже потребує 1,4 або вище. Вони повинні просто видалити цю перевірку з коду.
Девід В.

3
@ Девід В. - чому, блін, вони не додали підтримку Java 1.9 та 2.0, тому зміни працюють протягом наступних 6 чи 8 років. Java 9 скоро вийде, і все знову зламається ...
jww

2
Помилка була виправлена ​​в 2012 році для Eclipse's Ant 1.9.0, але Ant у Eclipse Kepler (2014!) Все ще перебуває на рівні 1.8.4, тому ця проблема все ще існує. Це оновлено в Луні чи ми все ще чекаємо? (Я вважаю веб-сайт Eclipse абсолютно марним для будь-якого належного відстеження змін та знання того, які версії яких плагінів увійшли до яких випусків; чи є це десь?)
Стюарт Россітер

14

Як продовження відповіді Крістіана Холдуса (позначеної як правильна), ви можете замість цього використовувати compilerатрибут у завданні Ant javac . Налаштування compiler="modern"має бути як зворотним (до 1.3), так і сумісним вперед.

Це дозволяє уникнути необхідності встановлювати властивість Java System з іменем build.compiler. Лише за відсутності явного встановлення compilerатрибуту для javacзавдання, Ant використовуватиме значення а build.compilerяк резервний варіант.


Я, безумовно, підтримав відповідь Крістіана Холдуса. Однак я знайшов, що це є кращим рішенням для моєї ситуації. Змушуючи абонентів додати параметр -D, ми ускладнюємо передачу build.xml зовнішнім користувачам. Нам також потрібно надати додаткові вказівки щодо використання, які завжди менші, чим краще :)
Ракеш N

працює, показує примітки при будівництві [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.тощо
aswzen

7

У мене була така сама проблема. У мене були правильно встановлені JAVA_HOME і JRE_HOME. У мене також був Мураха> 1,9.

Що я зробив, щоб це виправити, це зайти в Eclipse to Window -> Preferences. Розгорніть Ant і виберіть Runtime. За замовчуванням слід вибрати вкладку Classpath, а праворуч є кнопка під назвою "Ant Home". Натисніть цю кнопку і перевірте, чи вона спрямована на вашу папку Ant.


3
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, і ви повинні бути добре.


Але я не хочу використовувати jdk1.8. Чому Ant намагається використовувати компілятор 1.8 з цими налаштуваннями?
kamilz

1
Запустіть збірку Ant за допомогою "Run As"> "Ant Build ...", потім відкрийте вкладку "JRE" та виберіть "JRE Runtime", яку ви хочете використовувати для запуску сценарію.
Тоні Тоні Чоппер

Завдання "javac" може генерувати байт-код для старих vms, див. Атрибут "target" у doco: doco ant.apache.org/manual/Tasks/javac.html Java 1.5 не може генерувати байт-код для наступних віртуальних машин.
Марк О'Коннор,

2

Я спробував це за допомогою Eclise і отримав той самий клас помилок, який не знайдено: javac1.8

Я перевірив версію ANT у своїй системі

> мурашинаверсія

Apache Ant (TM) версія 1.9.6, складена 29 червня 2015 року

Коли я спробував запустити build.xml з командного рядка, це спрацювало. Потім я перевірив, що в Eclipse мова йде про стару версію ANT.

Я просто відредагував шлях ANT HOME в Eclipse, і він також працював звідси. :)

Нижче наведено зображення, звідки потрібно відредагувати АНТ-Шлях у Затьмаренні.

  1. Клацніть правою кнопкою миші файл build.xml
  2. Запустити як
  3. Зовнішні конфігурації інструменту
  4. Виберіть вкладку шлях до класу

Тепер змініть домашній шлях ANT звідси.

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


На що ви змінили домашній шлях АНТ?
ІгорГанапольський

1
Привіт @IgorGanapolsky! Раніше шлях до версії Ant був для Ant 1.8, який я оновив до останньої версії Ant 1.9, як показано на зображенні вище. І це спрацювало. Сподіваюся, я відповів на ваше запитання.
KulDeep

1

Оновіть Ant до випуску 1.9.x як Java 8 у несумісній з версіями Ant менше ніж 1.9


0

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

  • Клацніть правою кнопкою миші на назві завдання мурахи, наприклад "compileCustomSrc" у ant вікні.
  • Вибирайте Run As | External Tool Configurations
  • Потім на JREвкладці виберіть Separate JRE: Java SE7або будь-яку назву вашого java 7, потім натисніть Applyі потім Run.

Ваше мурашине завдання буде виконано і побудовано правильно!


0

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

випуск мурахи -Dbuild.compiler = javac1.7



0

Іноді проблема під час побудови війни за допомогою ANT також пов’язана з пропуском версії Java у файлах build.properties, оскільки build.XML намагається використовувати версію Java, згадану у властивості build.compiler

перевірте, чи властивість build.compiler є таким самим, як передбачена версія Java.


0

Ви можете завантажити новішу версію eclipse, яка включає нову версію Ant у каталозі плагінів. Потім скопіюйте банку Ant у каталог плагінів старого eclipse. Eclipse автоматично вкаже на новішу версію Ant. Це працювало для старшого Кеплера, а для мене новішого Mars2.


0

У мене була та сама проблема. І я зміг вирішити це в build.xml, встановивши властивість.

<property "build.compiler=javac1.7">
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.