Bootstrap class path не установлен
Итак, я получаю warning: [options] bootstrap class path not set in conjunction with -source 1.6
И я собираюсь задать три вопроса. Я понимаю, что мне нужно установить путь к бутстрапу, но я не уверен, что понимаю, как это сделать. Быстрый Google просто отправил меня на страницы, которые цитировались на странице Oracle, но я прочитал страницу Oracle и не чувствовал, что я ее очень хорошо понял.
В настоящее время я запускаю этот код в Netbeans, поэтому все, что мне нужно сделать, это нажать кнопку воспроизведения, чтобы он мог компилироваться и запускаться. Есть ли свойство, которое диктует, как это будет скомпилировано, чтобы я мог добавить в путь класса bootstrap?
Кроме того, для предстоящей вероятности, что я отключу ее только от Netbeans и запустив ее из командной строки, каков правильный способ скомпилировать с помощью пути класса bootstrap? Говорят, что $ javac -source 6 HelloWorld.java
, но просто сказать, что -source 1.6
действительно является решением?
Возможно, еще больший вопрос в том, как мне избежать этого типа предупреждения в будущем? Если я понимаю немного, я ссылаюсь на старый источник java и, следовательно, на более старые методы. Я не уверен, как и когда это произошло.
Ответы
Ответ 1
Вы выполняете кросс-компиляцию. Вы используете компилятор JDK 7 для компиляции классов для JDK 6. Это нормально, но чтобы избежать проблем, компилятор хочет получить доступ к JDK 6 rt.jar
. Причиной этого является то, что вы действительно можете генерировать классы, которые не работают с JDK 6, потому что вы можете использовать старые правила языка (в данном случае 1.6), но совершенно новые классы начальной загрузки. Например, некоторые методы могут отсутствовать в старшем JDK. Таким образом, вы получаете свою компиляцию, но как только вы запустите программу, она может взорваться с помощью MethodNotFoundException
.
Пара решений, вы можете просто выбрать один
- Укажите
rt.jar
из JDK 6. Почему бы не использовать более старый компилятор, чем даже?
- Использовать компилятор JDK 6 (он содержит
rt.jar
). Почему даже использовать 7, если нет 7 функций.
- Игнорируйте предупреждение и получите хорошее покрытие для тестирования, чтобы убедиться, что вы не используете функции Java 7
- Я не знаю о NetBeans, но в Eclipse вы также можете сказать, что вы компилируете против JDK 6, поэтому он не будет компилироваться, если вы используете функции Java 7.
- Измените бизнес-потребности и скомпилируйте для Java 7.
Ответ 2
Просто щелкните правой кнопкой мыши по свойствам проекта, а затем перейдите в Binding и выберите JDK 1.7, если вы используете его в своем проекте NetBeans, и именно по этой причине вы получаете эту проблему. Это поможет решить проблему и сработает для меня.
Ответ 3
Я понимаю, что мне нужно установить путь к bootstrap, но я не уверен, что понимаю, как это сделать.
В Netbeans 8.0.2 перейдите по ссылке:
Run > Set Project Configuration > Customise...
В окне "Категории" перейдите к:
Build > Compiling
Нижнее поле - "Дополнительные параметры компилятора", к которому вы можете добавить:
-bootclasspath /your/path/to/lower/java/version/lib/rt.jar
Ответ 4
Имел тот же самый Предупреждение, компилирующийся на консоли на macOS. Здесь добавляется опция-компилятор
-bootclasspath /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar
Обратите внимание, что в macOS для версий Java <= 1.6 (выпущенных Apple) rt.jar
называется classes.jar