предупреждение: [параметры] путь к классу начальной загрузки не установлен вместе с -source 1.5


140

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

предупреждение: [параметры] путь к классу начальной загрузки не установлен вместе с -source 1.5

Как я могу это исправить?




см. stackoverflow.com/questions/9164625/… для решения, если вы используете maven
— hoijui

4
Это вызвало у меня головную боль при использовании String.join из Java 8 в сборке Maven с исходным и целевым значением 7. Я использовал правило requireJavaVersion в maven-enforcer-plugin для обеспечения диапазона, <version>[1.7.0,1.7.0-79]</version>который, по крайней мере, прерывает сборку четким сообщением, а не тест с непонятным сообщением.
— Earcam 02

Ответы:


102

Из сообщения в блоге :

Чтобы использовать javac из JDK N для кросс-компиляции в более старую версию платформы, правильная практика:

  • Используйте старую настройку -source.
  • Установите путь к загрузочному классу для компиляции с файлом rt.jar (или аналогичным) для более старой платформы.

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


11
Отлично, хотя кажется проще использовать для компиляции старый JDK.
— dhardy

42

использование bootclasspath

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

В настоящее время я использую IDE Netbeans 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> Clean and Build) я получил аналогичное предупреждение: warning: [options] путь к классу начальной загрузки не установлен в сочетании с -source 1.7.

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

Это можно сделать, перейдя в myProject> Properties> Libraries и нажав кнопку Manage Platforms ... Затем в окне Java Platform Manager нажмите Add Platform ... и выберите: Java Standard Edition, нажмите Next и перейдите в / usr / lib / jvm / java-7-openjdk-amd64 (или в другое место, где находится версия JDK 1.7. ). Имя платформы будет установлено на JDK1.7. Просто нажмите «Готово», и все готово.

Теперь вы можете выбрать платформу Java в свойствах проекта. Выбрав JDK1.7 и запустив Clean and Build: никаких предупреждений. :-)


1
"myProject> Properties> Source / Binary Format: JDK 7" работал у меня
— Doctor Parameter

2

Предупреждение можно отключить с помощью новой подопции JDK 7 в семействе -Xlint, -Xlint: -options. например

$ javac -source 1.5 -Xlint: -options example.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, где name - одно из следующих имен предупреждений. Точно так же вы можете отключить имя предупреждения с помощью опции -Xlint: -name: ...

options Предупреждает о проблемах, связанных с использованием параметров командной строки. См. Пример такого предупреждения в примере кросс-компиляции.


38
Обратите внимание, это не лучший вариант - просто отключать подобные предупреждения
— Александр Малахов

9
согласен, но иногда лучше отключить некоторые предупреждения, а не выводить их сотни, чтобы ваши истинные предупреждения были скрыты.
— Neon

3
Может ли кто-нибудь привести минимальный пример того, что что-то идет не так, игнорируя это предупреждение?
— Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功


2

Убедитесь, что ваша версия jdk и исходная версия компилятора java совпадают. Например, если вы используете maven и настроили проект с использованием JDK 9, то следующий фрагмент pom будет через указанное выше предупреждение

            <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.