Je viens juste de commencer à jouer avec jdk9 - et je suis resté bloqué au tout début:
À ce stade, je peux exécuter Eclipse sur mon Java par défaut (8u60) avec jre/jdk (avec l'argument/out vm dans Eclipse.ini) et utiliser le support Java 9.
À l'étape suivante, je souhaitais exécuter Eclipse avec Java 9: ajout de vm-arg à Eclipse.ini. Eclipse abandonne désormais son démarrage avec un long journal d'erreurs (l'ini et le journal sont illustrés ci-dessous).
Où est le problème?
Mon 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
Le haut du journal des erreurs (c'est> 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)
Mettre à jour
toujours pas de chance avec le dernier néon (M6) et 9-ea-113, l'erreur enregistrée a changé, bien que
!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
Ce qui ressemble à celui d'un rapport de bogue . C'est marqué comme corrigé dans M7.
J'utilise Java Runtime Environment SE (version 9-ea + 158) et la version Eclipse: Neon.2 Release (4.6.2) - Identifiant de construction: 20161208-0600
D'une manière ou d'une autre, les solutions avec -Djdk.launcher.addmods=
et -addmods
utilisant les valeurs Java.se.ee
ou Java.annotations.common
ne fonctionnaient pas.
Voici la solution qui a fonctionné pour moi:
--add-modules=Java.se.ee
Pour vous débarrasser du problème Java.lang.ClassNotFoundException: javax.annotation.PostConstruct
, essayez d’ajouter la ligne suivante sous -vmargs
dans votre Eclipse.ini
:
-Djdk.launcher.addmods=Java.annotations.common
(Passera à --add-modules=Java.annotations.common
dans JDK 9 EA build 132)
Voir https://bugs.Eclipse.org/bugs/show_bug.cgi?id=493761
UPDATE: Depuis cette réponse, plus de choses ont changé, j'utilise actuellement Eclipse avec JDK 9 b177 et ces vmargs ajoutés: -- add-modules = Java.xml.bind, Java.xml.ws.annotation
Ajoutez la ligne suivante à la fin du fichier Eclipse.ini
--add-modules=Java.se.ee
Quiconque est confronté au même problème de crash Eclipse avec Java 11, aucune des solutions ci-dessus ne semble fonctionner.
Voici l'erreur:
org.Eclipse.e4.core.di.InjectionException: Java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
Comme mentionné ici https://bugs.Eclipse.org/bugs/show_bug.cgi?id=533390 , ce problème est résolu avec Eclipse Photon 4.8.
Voici la solution de contournement mentionnée https://bugs.Eclipse.org/bugs/show_bug.cgi?id=533390#c22 . Cependant, il s’agit d’une solution de contournement à court terme; il est donc préférable de mettre à jour Eclipse vers la version 4.8.
Pas:
.
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
Depuis que beaucoup de questions et réponses ont été marquées comme une duplication de ceci et les solutions déjà suggérées sont néanmoins hacky.
Mise à jour du 11 octobre 2017 - Vous devez effectuer la mise à niveau vers le dernier package Eclipse Eclipse Oxygen.1a (4.7.1a) qui est marqué comme publié et prend en charge Java 9.
J'ai la même erreur que je trouve la solution à partir de Configure Eclipse for Java 9
Après l'édition, vous devez faire dans le fichier Eclipse.ini
Et cela résoudra votre problème… .. Votre fichier Eclipse.ini se présente comme suit:
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk-9\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
Votre Eclipse.ini
est incorrect pour la spécification de la machine virtuelle Java. Tout d'abord, l'option -vm
doit être proche de la fin, juste avant toute ligne -vmargs
. Deuxièmement, vous ne spécifiez pas l'emplacement du dossier bin
, mais plutôt l'exécutable Java (ou dll). Voir la page wiki Eclipse.ini pour plus de détails (et soyez très attentif aux détails écrits ici).
Au fait, où avez-vous eu l'information pour écrire Eclipse.ini
comme vous l'avez fait? J'aimerais connaître la source dans l'espoir de corriger cette désinformation.
Ajouter cela dans Eclipse.ini a fonctionné pour moi
--add-modules=Java.se.ee
-XX:+IgnoreUnrecognizedVMOptions
J'ai eu le même problème. NoClassDefFoundError indique quand vous choisissez de construire/compiler votre projet avec Java 9 JDK. Eclipse ne peut pas trouver le fichier JAR requis dans le dossier JDK racine. Par conséquent, il ne parvient pas à démarrer complètement. Après avoir installé le plug-in de support Java 9 à partir du marché, vous pourrez peut-être démarrer Eclipse, mais vous verrez néanmoins de nombreuses erreurs et ne pourrez pas compiler un seul projet. La solution (pour le moment) consiste à basculer vers Java 9 JRE dans "JRE installés" sous "Préférences du projet". Cela a tout arrangé pour moi
Tiré de ici , vous voudrez peut-être lire l'article complet pour plus d'instructions.