Включить JDK 7 в Eclipse Indigo на Mountain Lion
Я работаю над проектом Scala с Eclipse (Indigo SR2). Сегодня я обновил свою машину до Mountain Lion, потому что нам нужны некоторые функции JDK 7. Установка JDK 7 работала нормально:
$ java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
В Eclipse я изменил следующие настройки:
- Java = > Компилятор = > Установленные JRE: добавление JDK1.7.0 с помощью пути
/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home
- Java = > Компилятор = > Установленные JREs = > Экзаменационная среда: установите JavaSE-1.7 на
JDK1.7.0
- Java = > Компилятор: Уровень соответствия: 1.7
- Scala = > Компилятор: Target = jvm-1.7
Затем я перезапустил Eclipse и попытался запустить script. Тем не менее, я всегда получаю сообщение об ошибке:
value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory
Указанный метод доступен только с Java 1.7, и Eclipse, похоже, не находит его, хотя щелчок на нем показывает функцию в классе ManagementFactory
. О Eclipse = > Конфигурация показывает, что он все еще использует JDK 6 (java.runtime.version=1.6.0_37-b06-434-11M3909
), но мне нужен JDK 7.
Итак, я попробовал следующее (как описано в StackOverflow и других сайтах):
- добавить
-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/java
в файл eclipse.ini(дважды проверить путь, правильное расположение в файле в соответствии с сайтом eclipse, а также добавить новую строку между ними)
- добавьте то же самое к Info.plist
-
$ /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/
- Создайте символическую ссылку от 1.6 до 1.7
Но не повезло, Eclipse продолжает работать только с JDK-6. Странно, что я могу явно изменить JRE в Run=>Run Configurations
на JDK7, и он будет запускать его таким образом. Но я бы не хотел изменять это для каждого запускаемого файла.
Другие предложения?
Благодаря подсказке от EECOLOR, я смог использовать плагин Scala в Eclipse Juno, где JDK7 работает отлично. Однако теперь я сталкиваюсь с проблемой, связанной с зависимостью. Исключением, которое я получаю, можно увидеть здесь: https://gist.github.com/anonymous/ac0f3a3655419e5149fa
Странно, файл просто начинается нормально, когда я запускаю его из командной строки простым java -cp JARFILE com.AND-SO-ON.file
. Для создания источников и получения зависимостей мы используем SBT.
My Eclipse.ini выглядит следующим образом (по умолчанию, кроме Xmx):
-startup
../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XX:MaxPermSize=256m
-Xms40m
-Xmx1060m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
Тот же проект (т.е. действительно тот же проект, а не только тот же код) работает без проблем зависимостей в Eclipse Indigo. Изменить: только что выяснили, что это исключение вызвано JDK7, а не используемой версией Eclipse.
Ответы
Ответ 1
Тем временем мне удалось решить эти проблемы.
Первая попытка:
- Обновить до самого последнего JDK (1.7.0u15 на данный момент)
- Клонировать код из Github снова
- Установить Eclipse Indigo
- переустановка Eclipse решила проблемы с JDK6, теперь он просто начинается с JDK7 без дополнительной настройки.
- Установите плагин Scala
- создайте новый проект Eclipse, используя
sbt eclipse
- импортировать созданный проект
Упс, не работает! Я все еще получаю это исключение:
value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory
... что странно, потому что Eclipse теперь действительно работает с JDK7. Не копая глубже, я просто дал Eclipse Juno выстрел.
Вторая попытка:
- Сделайте все, что указано выше
- Установите Eclipse Juno вместо Indigo
- Да, это работает!:)
Вывод:
Так что я не уверен, почему, но Eclipse Indigo как-то не нравится getPlatformMXBean
. Это не похоже на проблему с JDK, но Eclipse.
Ответ 2
Я использую версию предварительного просмотра, которая поддерживает Juno просто отлично: http://scala-ide.org/download/milestone.html#scala_ide_21_milestone_3