2013-04-08 4 views
21

Так я getting- warning: [options] bootstrap class path not set in conjunction with -source 1.6самозагрузки путь класса не установлен

И я собирался задать 3 вопроса об этом. Я понимаю, что мне нужно установить путь к бутстрапу, но я не уверен, что понимаю, как это сделать. Быстрый Google просто отправил меня на страницы, которые цитировались на странице Oracle, но я прочитал страницу Oracle и не чувствовал, что я ее очень хорошо понял.

В настоящее время я запускаю этот код на Netbeans, поэтому все, что мне нужно сделать, это нажать кнопку воспроизведения для его компиляции и запуска. Есть ли свойство, которое диктует, как это будет скомпилировано, чтобы я мог добавить в путь класса bootstrap?

Кроме того, для предстоящего случая, что я его отключу, работая только на Netbeans и запустив его из командной строки, каков правильный способ скомпилировать с помощью пути класса начальной загрузки? Они говорят $ javac -source 6 HelloWorld.java, но просто заявили бы, что -source 1.6 действительно будет решением?

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

ответ

36

Вы выполняете кросс-компиляцию. Вы используете компилятор 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.
+1

Спасибо, Я чувствую, что это немного облегчило это: – Stephopolis

+7

Downvoting, потому что несколько решений даны без инструкций вообще о том, как их выполнять. – seansand

+0

@toomasr Пожалуйста, поймите, что возвращение к старому JDK легко работает на вашей локальной машине (MacOs - одно из исключений кстати). При работе в крупных компаниях вы слишком часто не можете изменить свой JDK. Например, вы должны использовать 1.7 на своей машине разработки, а сервер, на который вы нацелены, по-прежнему застрял с 1.6. Конечно, теперь вы можете подождать, пока они (администраторы серверов) не перейдут к 1.7, или вы будете вести себя как профессионал и не выполните свою работу. Какой будет ваш выбор? – whaefelinger

1

Просто зайдите правой кнопкой мыши на свойствах проекта, а затем перейти к Binding и выбрать JDK 1,7 условии, что вы используете его функции в вашем проекте NetBeans и это причина, почему вы получаете проблему. Это поможет решить проблему и сработает для меня.

+0

Как «привязка» к JDK 1.7 помогает указать 1.6 в качестве пути к начальной загрузке? –

0

Я понимаю, что мне нужно установить путь к бутстрапу, но я не уверен, что понимаю, как это сделать.

В Netbeans 8.0.2, перейдите по ссылке:

Run > Set Project Configuration > Customise... 

В окне Категории перейдите по ссылке:

Build > Compiling 

нижнее поле "Дополнительные параметры компилятора", к которому вы можете добавить:

-bootclasspath /your/path/to/lower/java/version/lib/rt.jar 
Смежные вопросы