Это вызвало у меня головную боль при использовании String.join из Java 8 в сборке Maven с исходным и целевым значением 7. Я использовал правило requireJavaVersion в maven-enforcer-plugin для обеспечения диапазона, <version>[1.7.0,1.7.0-79]</version>который, по крайней мере, прерывает сборку четким сообщением, а не тест с непонятным сообщением.
Чтобы использовать javac из JDK N для кросс-компиляции в более старую версию платформы, правильная практика:
Используйте старую настройку -source.
Установите путь к загрузочному классу для компиляции с файлом rt.jar (или аналогичным) для более старой платформы.
Если второй шаг не будет выполнен, javac будет послушно использовать старые языковые правила в сочетании с новыми библиотеками, что может привести к тому, что файлы классов не будут работать на старой платформе, поскольку могут быть включены ссылки на несуществующие методы.
В настоящее время я использую 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: никаких предупреждений. :-)
Предупреждения, которые можно включить или отключить с помощью параметра -Xlint
Включите имя предупреждения с помощью опции -Xlint: name, где name - одно из следующих имен предупреждений. Точно так же вы можете отключить имя предупреждения с помощью опции -Xlint: -name: ...
options Предупреждает о проблемах, связанных с использованием параметров командной строки. См. Пример такого предупреждения в примере кросс-компиляции.
Убедитесь, что ваша версия jdk и исходная версия компилятора java совпадают. Например, если вы используете maven и настроили проект с использованием JDK 9, то следующий фрагмент pom будет через указанное выше предупреждение
<version>[1.7.0,1.7.0-79]</version>
который, по крайней мере, прерывает сборку четким сообщением, а не тест с непонятным сообщением.Ответы:
Из сообщения в блоге :
источник
использование 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.
источник
В настоящее время я использую 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: никаких предупреждений. :-)
источник
Предупреждение можно отключить с помощью новой подопции 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 Предупреждает о проблемах, связанных с использованием параметров командной строки. См. Пример такого предупреждения в примере кросс-компиляции.
источник
Убедитесь, что ваша версия 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>
источник
Загрузите JDK (в письменной версии с предупреждением) -> установить
Щелкните правой кнопкой мыши свой проект -> Свойства -> Библиотеки -> Платформа Java (добавьте установленный JDK) -> ОК
источник