Неон: как работать на jdk9?
Просто начал играть с jdk9 - и вроде бы застрял в самом начале:
- загруженный и извлеченный eclipse-java-neon-m4a-win32
- установлена поддержка java 9 (по dnd из marketplace)
- загружен и установлен jdk9u99 (только jdk, а не public jre)
В этот момент я могу запустить eclipse в моей java-java по умолчанию (это 8u60) как с jre/jdk (с аргументом /out vm в eclipse.ini), так и с поддержкой java 9.
В качестве следующего шага я хотел запустить eclipse с java 9: добавлен vm-arg в eclipse.ini, теперь eclipse прерывает его запуск с длинным журналом ошибок (как ini, так и log показаны ниже).
Где проблема?
My ini:
-startup
plugins/org.eclipse.equinox.launcher_1.3.200.v20151021-1308.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.300.v20151013-1129
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
d:\java\jdk\190_ea\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
Верхняя часть журнала ошибок (it > 900k)
!SESSION 2016-01-22 14:31:55.974 -----------------------------------------------
eclipse.buildId=4.6.0.I20151209-2300
java.version=9-ea
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product
!ENTRY org.eclipse.equinox.common 4 0 2016-01-22 14:31:57.113
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.equinox.common [143]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.7))"
at org.eclipse.osgi.container.Module.start(Module.java:429)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1562)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
!ENTRY org.eclipse.ant.core 4 0 2016-01-22 14:31:57.175
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.ant.core [61]
Unresolved requirement: Require-Bundle: org.eclipse.core.variables; bundle-version="[3.1.0,4.0.0)"
-> Bundle-SymbolicName: org.eclipse.core.variables; bundle-version="3.2.800.v20130819-1716"; singleton:="true"
org.eclipse.core.variables [88]
Unresolved requirement: Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.3.0,4.0.0)"
-> Bundle-SymbolicName: org.eclipse.core.runtime; bundle-version="3.12.0.v20151104-0048"; singleton:="true"
org.eclipse.core.runtime [87]
Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.8.0,4.0.0)"; visibility:="reexport"
-> Bundle-SymbolicName: org.eclipse.equinox.common; bundle-version="3.8.0.v20151023-1114"; singleton:="true"
org.eclipse.equinox.common [143]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.7))"
at org.eclipse.osgi.container.Module.start(Module.java:429)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Обновление
до сих пор не повезло с последними версиями Neon (M6) и 9-ea-113, зарегистрированная ошибка изменилась, хотя
!SESSION 2016-04-28 16:27:53.344 -----------------------------------------------
eclipse.buildId=4.6.0.I20160317-0200
java.version=9-ea
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product
!ENTRY org.eclipse.osgi 4 0 2016-04-28 16:28:10.145
!MESSAGE Application error
!STACK 1
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:490)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:504)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:203)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:627)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:605)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:520)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609)
at org.eclipse.equinox.launcher.Main.run(Main.java:1516)
at org.eclipse.equinox.launcher.Main.main(Main.java:1489)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
... 23 more
Что похоже на ту, что находится в отчете об ошибке . Он обозначен как фиксированный в M7.
Ответы
Ответ 1
Я использую Java (TM) SE Runtime Environment (сборка 9-ea + 158) и затмение Версия: Neon.2 Release (4.6.2) - Идентификатор сборки: 20161208-0600
Каким-то образом решения с -Djdk.launcher.addmods=
и -addmods
с использованием значений java.se.ee
или java.annotations.common
не работали.
Ниже приведено решение, которое сработало для меня:
--add-modules=java.se.ee
Источник: https://issues.jboss.org/browse/JBIDE-22417?focusedCommentId=13310535&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13310535
Ответ 2
Чтобы избавиться от проблемы java.lang.ClassNotFoundException: javax.annotation.PostConstruct
, попробуйте добавить следующую строку под -vmargs
в свой eclipse.ini
:
-Djdk.launcher.addmods=java.annotations.common
(изменится на --add-modules=java.annotations.common
в JDK 9 EA build 132)
См. https://bugs.eclipse.org/bugs/show_bug.cgi?id=493761
UPDATE: после этого ответа все изменилось, в настоящее время я запускаю Eclipse с JDK 9 b177, и эти добавленные vmargs:
--add-модули = java.xml.bind, java.xml.ws.annotation
Ответ 3
Кто бы ни сталкивался с той же самой проблемой сбоя Eclipse с Java 11, ни одно из вышеупомянутых решений, кажется, не работает.
Вот ошибка:
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
Как упомянуто здесь https://bugs.eclipse.org/bugs/show_bug.cgi?id=533390, эта проблема исправлена в Eclipse Photon 4.8.
Вот обходной путь, упомянутый https://bugs.eclipse.org/bugs/show_bug.cgi?id=533390#c22. Тем не менее, это всего лишь краткосрочный обходной путь, поэтому лучше обновить затмение до 4.8
шаги:
- Перейдите в файл config.ini eclipse, который вы найдете здесь /Applications/Eclipse_4.7.2.app/Contents/Eclipse/configuration/config.ini
- Добавьте ниже содержание
,
org.osgi.framework.system.packages = \
javax.accessibility,\
javax.activation,\
javax.activity,\
javax.crypto,\
javax.crypto.interfaces,\
javax.crypto.spec,\
javax.imageio,\
javax.imageio.event,\
javax.imageio.metadata,\
javax.imageio.plugins.bmp,\
javax.imageio.plugins.jpeg,\
javax.imageio.spi,\
javax.imageio.stream,\
javax.jws,\
javax.jws.soap,\
javax.lang.model,\
javax.lang.model.element,\
javax.lang.model.type,\
javax.lang.model.util,\
javax.management,\
javax.management.loading,\
javax.management.modelmbean,\
javax.management.monitor,\
javax.management.openmbean,\
javax.management.relation,\
javax.management.remote,\
javax.management.remote.rmi,\
javax.management.timer,\
javax.naming,\
javax.naming.directory,\
javax.naming.event,\
javax.naming.ldap,\
javax.naming.spi,\
javax.net,\
javax.net.ssl,\
javax.print,\
javax.print.attribute,\
javax.print.attribute.standard,\
javax.print.event,\
javax.rmi,\
javax.rmi.CORBA,\
javax.rmi.ssl,\
javax.script,\
javax.security.auth,\
javax.security.auth.callback,\
javax.security.auth.kerberos,\
javax.security.auth.login,\
javax.security.auth.spi,\
javax.security.auth.x500,\
javax.security.cert,\
javax.security.sasl,\
javax.sound.midi,\
javax.sound.midi.spi,\
javax.sound.sampled,\
javax.sound.sampled.spi,\
javax.sql,\
javax.sql.rowset,\
javax.sql.rowset.serial,\
javax.sql.rowset.spi,\
javax.swing,\
javax.swing.border,\
javax.swing.colorchooser,\
javax.swing.event,\
javax.swing.filechooser,\
javax.swing.plaf,\
javax.swing.plaf.basic,\
javax.swing.plaf.metal,\
javax.swing.plaf.multi,\
javax.swing.plaf.nimbus,\
javax.swing.plaf.synth,\
javax.swing.table,\
javax.swing.text,\
javax.swing.text.html,\
javax.swing.text.html.parser,\
javax.swing.text.rtf,\
javax.swing.tree,\
javax.swing.undo,\
javax.tools,\
javax.xml,\
javax.xml.bind,\
javax.xml.bind.annotation,\
javax.xml.bind.annotation.adapters,\
javax.xml.bind.attachment,\
javax.xml.bind.helpers,\
javax.xml.bind.util,\
javax.xml.crypto,\
javax.xml.crypto.dom,\
javax.xml.crypto.dsig,\
javax.xml.crypto.dsig.dom,\
javax.xml.crypto.dsig.keyinfo,\
javax.xml.crypto.dsig.spec,\
javax.xml.datatype,\
javax.xml.namespace,\
javax.xml.parsers,\
javax.xml.soap,\
javax.xml.stream,\
javax.xml.stream.events,\
javax.xml.stream.util,\
javax.xml.transform,\
javax.xml.transform.dom,\
javax.xml.transform.sax,\
javax.xml.transform.stax,\
javax.xml.transform.stream,\
javax.xml.validation,\
javax.xml.ws,\
javax.xml.ws.handler,\
javax.xml.ws.handler.soap,\
javax.xml.ws.http,\
javax.xml.ws.soap,\
javax.xml.ws.spi,\
javax.xml.ws.spi.http,\
javax.xml.ws.wsaddressing,\
javax.xml.xpath,\
org.ietf.jgss,\
org.omg.CORBA,\
org.omg.CORBA_2_3,\
org.omg.CORBA_2_3.portable,\
org.omg.CORBA.DynAnyPackage,\
org.omg.CORBA.ORBPackage,\
org.omg.CORBA.portable,\
org.omg.CORBA.TypeCodePackage,\
org.omg.CosNaming,\
org.omg.CosNaming.NamingContextExtPackage,\
org.omg.CosNaming.NamingContextPackage,\
org.omg.Dynamic,\
org.omg.DynamicAny,\
org.omg.DynamicAny.DynAnyFactoryPackage,\
org.omg.DynamicAny.DynAnyPackage,\
org.omg.IOP,\
org.omg.IOP.CodecFactoryPackage,\
org.omg.IOP.CodecPackage,\
org.omg.Messaging,\
org.omg.PortableInterceptor,\
org.omg.PortableInterceptor.ORBInitInfoPackage,\
org.omg.PortableServer,\
org.omg.PortableServer.CurrentPackage,\
org.omg.PortableServer.POAManagerPackage,\
org.omg.PortableServer.POAPackage,\
org.omg.PortableServer.portable,\
org.omg.PortableServer.ServantLocatorPackage,\
org.omg.SendingContext,\
org.omg.stub.java.rmi,\
org.w3c.dom,\
org.w3c.dom.bootstrap,\
org.w3c.dom.css,\
org.w3c.dom.events,\
org.w3c.dom.html,\
org.w3c.dom.ls,\
org.w3c.dom.ranges,\
org.w3c.dom.stylesheets,\
org.w3c.dom.traversal,\
org.w3c.dom.views,\
org.w3c.dom.xpath,\
org.xml.sax,\
org.xml.sax.ext,\
org.xml.sax.helpers
Ответ 4
Добавьте следующую строку в конец eclipse.ini
--add-modules=java.se.ee
Ответ 5
Так как много Q & A были отмечены дубликатом этого, и уже предлагаемые решения, тем не менее, взломаны.
Обновление от 11 октября 2017 года. Вы должны обновиться до последнего eclipse package Eclipse Oxygen.1a (4.7.1a), который помечен как выпущенный и поддерживает Java 9.
Ответ 6
Ваш eclipse.ini
неверен для указания JVM. Прежде всего, параметр -vm
должен быть близок к концу, прямо перед любой строкой -vmargs
. Во-вторых, вы не указываете местоположение папки bin
, а скорее исполняемый файл java (или dll). Подробнее см. страницу wiki eclipse.ini (и обратите особое внимание на детали, написанные там).
Кстати, где вы получили информацию, чтобы написать eclipse.ini
так, как вы это делали? Я хотел бы узнать источник в надежде исправить эту дезинформацию.
Ответ 7
У меня такая же ошибка. Я нашел решение из Настроить Eclipse для Java 9
Следующее редактирование вы должны сделать в файле eclipse.ini
- -vm
C:\Program Files\Java\jdk-9\bin\javaw.exe
- - адд-модули = ALL-SYSTEM
И это решит вашу проблему.
Ваш файл eclipse.ini выглядит следующим образом:
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-9\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
Ответ 8
У меня была такая же проблема. NoClassDefFoundError показывает, когда вы выбираете сборку/компиляцию своего проекта с помощью Java 9 JDK. Eclipse не может найти требуемый файл jar в корневой папке JDK, поэтому он не запускается полностью. После установки плагина поддержки Java 9 с рынка вы можете запустить Eclipse, но все же вы увидите много ошибок и не сможете скомпилировать один проект. Решением (на данный момент) является переход на Java 9 JRE в "Установленные JRE" в разделе "Предпочтения проекта". Это фиксировало все для меня
Взято из здесь, вы можете прочитать полную статью для получения дополнительных инструкций
Ответ 9
Добавление этого в eclipse.ini сработало для меня
--add-modules=java.se.ee
-XX:+IgnoreUnrecognizedVMOptions
Ответ 10
Эта проблема иногда из-за наличия другой версии Java в машине. Я решил эту проблему, чтобы обновить INI файл с правильной версией. Ниже конфигурация работает для меня.
- запускать
плагины /org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar - В.М.
C:\Program Files\Java\jdk1.8.0_202\bin\javaw.exe - vmargs
- Dosgi.requiredJavaVersion = 1,8
- Xmx2G
- Xms200m
- XX: MaxPermSize = 512m