web-dev-qa-db-fra.com

Néon: comment utiliser jdk9?

Je viens juste de commencer à jouer avec jdk9 - et je suis resté bloqué au tout début: 

  • téléchargé et extrait Eclipse-Java-neon-m4a-win32
  • support Java 9 installé (par dnd de marketplace )
  • téléchargé et installé jdk9u99 (uniquement le jdk, pas le jre public)

À 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. 

16
kleopatra

Edit: Vous pouvez télécharger la dernière version d'Eclipse qui prend en charge Java 9 - https://www.Eclipse.org/downloads/Eclipse-packages/ _


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

Source: https://issues.jboss.org/browse/JBIDE-22417?focusedCommentId=13310535&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13310535

28
Pavan Kumar

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

11
Klara

Ajoutez la ligne suivante à la fin du fichier Eclipse.ini

--add-modules=Java.se.ee
4
Pratik Patil

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:

  1. Accédez au fichier Eclipse config.ini, que vous trouverez ici /Applications/Eclipse_4.7.2 . app/Sommaire/Eclipse/configuration/config.ini 
  2. Ajouter le contenu ci-dessous

.

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
Kondal Kolipaka

Sortie d'oxygène Eclipse.1a (4.7.1a)

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.

3
nullpointer

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

  1. -vm C:\Program Files\Java\jdk-9\bin\javaw.exe
  2. --add-modules = ALL-SYSTEM

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
1
sodhankit

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.

1
E-Riz

Ajouter cela dans Eclipse.ini a fonctionné pour moi

--add-modules=Java.se.ee   
-XX:+IgnoreUnrecognizedVMOptions 
0

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.

0
filip_j