попередження: [параметри] шлях до класу завантаження не встановлений у поєднанні з -source 1.5


138

Я отримую попереджуюче повідомлення у час збирання!

попередження: [параметри] шлях до класу завантаження не встановлений у поєднанні з -source 1.5

Як я можу це виправити?



1
Форуми NetBeans: forums.netbeans.org/topic43819.html
Alex K

див. stackoverflow.com/questions/9164625/… для рішення у випадку, якщо ви використовуєте maven
hoijui

4
Це спричинило мені головний біль за допомогою String.join з Java 8 у Maven build з джерелом та цільовим діапазоном 7. Я використав правило maven- Execucer -plugin’s requJavaVersion для примусового застосування діапазону, <version>[1.7.0,1.7.0-79]</version>який принаймні розбиває збірку чітким повідомленням, а не тест із незрозумілим повідомленням.
вушка

Відповіді:


102

З публікації в блозі :

Щоб використовувати javac з JDK N для перехресного компілятора на більш стару версію платформи, правильною практикою є:

  • Використовуйте старіші налаштування джерела.
  • Встановіть bootclasspath для компіляції проти rt.jar (або еквівалент) для старшої платформи.

Якщо другий крок не буде зроблено, javac буде слушно використовувати старі правила мови, поєднані з новими бібліотеками, що може призвести до файлів класів, які не працюють на старій платформі, оскільки посилання на неіснуючі методи можуть бути включені.


11
Чудово, хоча здається, що простіше використовувати старіший JDK для компіляції.
dhardy

42

використання завантажувального курсу

javac -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar \
      -source 1.7 Main.java

У системах UNIX знайдіть, rt.jarвикористовуючи:

locate -r '/rt.jar$'

Встановіть JAVA_HOMEтак, що rt.jarзнаходиться в $JAVA_HOME/jre/lib/rt.jar, потім:

javac -source 1.7 -bootclasspath "$JAVA_HOME/jre/lib/rt.jar" Main.java

Тестовано на Ubuntu 14.04 для Oracle Java 7 та 8.


4

Зараз я запускаю Netbeans IDE 8.0.2 з JDK 1.8 на Linux Mint 17.1, який має java -version = 1.7.0_65. Отже, щоб мати змогу запускати файли JAR, мені довелося встановити myProject> Properties> Source / Binary Format: JDK 7. Однак при складанні (myProject> Очистити та побудувати) я отримав подібне попередження: попередження: [параметри] шлях до класу завантаження не встановлений спільно з -ресурсом 1.7.

Рішенням було додати платформу Linux Mint JDK1.7 до списку платформ Netbeans.

Це можна зробити, перейшовши до myProject> Властивості> Бібліотеки та натиснувши кнопку Manage Platforms .... Потім у вікні Менеджера платформ Java натисніть кнопку Додати платформу ... і виберіть: Стандартне видання Java, натисніть кнопку Далі та перейдіть до / usr / lib / jvm / java-7-openjdk-amd64 (або будь-яке місце розташування версії JDK 1.7 ). Назва платформи буде встановлена ​​на JDK1.7. Просто натисніть кнопку Готово, і ви закінчите.

Тепер ви можете вибрати платформу Java у властивостях проекту. Вибравши JDK1.7 та запустивши «Очистити та побудувати»: більше ніяких попереджень. :-)


1
"myProject> Властивості> Джерело / Бінарний формат: JDK 7" працював на мене
Доктор Параметр

2

Попередження можна відключити за допомогою нової сукупності JDK 7 у сімействі -Xlint, -Xlint: -options. напр

$ javac-джерело 1,5 -Xlint: -предприклад.java

джерела: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

і

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings

Попередження, які можна ввімкнути або вимкнути за допомогою опції -Xlint

Увімкніть ім'я попередження за допомогою параметра -Xlint: name, де ім'я - одне з наступних імен попередження. Аналогічно, ви можете відключити ім'я попередження за допомогою параметра -Xlint: -name: ...

параметри Попередження про проблеми, пов'язані з використанням параметрів командного рядка. Див. Приклад перехресної компіляції для прикладу такого типу попередження.


38
Зауважте, що це не дуже гарна ідея, щоб закрити подібні попередження
Олександр Малахов

9
погоджено, але іноді краще відключити деякі попередження проти виведення сотень з них, щоб ваші справжні попередження були прихованими.
Неон

3
Чи може хтось навести мінімальний приклад того, що піде не так, ігноруючи це попередження?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1

2

Переконайтесь, що версія jdk та джерела версії компілятора java однакові. Наприклад, якщо ви використовуєте maven та налаштовуєте проект за допомогою JDK 9, то наступний фрагмент пам’яті пройде через вищезастереження

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    ...
                </configuration>
            </plugin>

Виправлення вихідної / цільової версії на 9 виправляє попередження, як показано нижче

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                    ...
                </configuration>
            </plugin>

1
Це вирішило проблему, з якою я боровся близько години, я просто не міг її побачити.
Rutendo

-2
  1. Завантажте JDK (на попереджувальній письмовій версії) -> встановити

  2. Клацніть правою кнопкою миші ваш проект -> Властивості -> Бібліотеки -> Платформа Java (додайте встановлений JDK) -> ОК

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