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

140

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

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

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

Сэм
источник
1
Форумы NetBeans: форумы.netbeans.org/topic43819.html
Alex K,
см. 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: никаких предупреждений. :-)

n9dyfi
источник
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) -> ОК

Ерасыл Абенов
источник