Que faire si vous obtenez une erreur NoClassDefFoundError lorsque vous essayez d'exécuter eclipse sur Java 9

Je construisais un environnement parce que j'ai remplacé le disque dur du bureau par un SSD. Java 9 a été officiellement publié et lorsque j'ai essayé de créer un environnement avec Java 9 + eclipse 4.7, il s'est cassé au démarrage.

Post-scriptum du 5/12/2017:

https://wiki.eclipse.org/Configure_Eclipse_for_Java_9

Users who install Eclipse Oxygen 4.7.1a are able to launch with Java 9 and get Java 9 support, and the configuration described below won't be necessary anymore. There might be cases which won't work, see item 3 below in that case.

Alors installons eclipse 4.7.1a ou version ultérieure

PostScript 2017/09/27:

https://wiki.eclipse.org/Configure_Eclipse_for_Java_9 Il a été écrit pour ajouter --add-modules = ALL-SYSTEM à. (2017/10/02) Cela a fonctionné sans aucun problème, donc je l'ai corrigé.

TL;DR Ajoutez --add-modules = ALL-SYSTEM à -vmargs dans eclipse.ini.

eclipse.ini


-vmargs
--add-modules=ALL-SYSTEM

environnement

OS: Windows8.1 64bit JDK: Java SE Development Kit 9 eclipse: Oxygen Release (4.7.0)

Ce que j'ai fait

Installation du JDK

-> Laisser la valeur par défaut

> java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

installation de l'éclipse

-> Définir le chemin jdk avec -vm dans eclipse.ini

eclipse.ini


-vm
C:\Program Files\Java\jdk-9\bin\javaw.exe

Créez un espace de travail et démarrez-le

-> j'ai une erreur

.log


!SESSION 2017-09-24 20:47:30.135 -----------------------------------------------
eclipse.buildId=4.7.0.I20170612-0950
java.version=9
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=ja_JP
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.osgi 4 0 2017-09-24 20:47:33.101
!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:410)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)

...Abréviation...

Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399)
	... 23 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.100.v20170421-1418
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	... 25 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2017-09-24 20:47:33.117
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
	at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450)
	at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:156)
	at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)

...Abréviation...

Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.100.v20170421-1418
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	... 21 more

Ajout de --add-modules = ALL-SYSTEM à -vmargs dans eclipse.ini

eclipse.ini


    -vmargs
    -Dosgi.requiredJavaVersion=1.8
    [email protected]/eclipse-workspace
    -XX:+UseG1GC
    -XX:+UseStringDeduplication
    -Dosgi.requiredJavaVersion=1.8
    -Xms256m
    -Xmx1024m
    -Declipse.p2.max.threads=10
    -Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest
    -Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/
+   --add-modules=ALL-SYSTEM

-> Vous l'avez commencé

référence

https://wiki.eclipse.org/Configure_Eclipse_for_Java_9 https://www.eclipse.org/eclipse/news/4.6/platform.php#java-9 https://issues.jboss.org/browse/JBIDE-22417?focusedCommentId=13310535&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel&_sscc=t#comment-13310535

Recommended Posts

Que faire si vous obtenez une erreur NoClassDefFoundError lorsque vous essayez d'exécuter eclipse sur Java 9
Que faire si vous obtenez une erreur de bibliothèque partagée JNI lorsque vous essayez de créer avec Eclipse
Que faire si vous recevez une alerte de vulnérabilité MiniMagick sur GitHub
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Que faire si vous obtenez une erreur gcc dans Docker
Que faire lorsque vous rencontrez le problème node_modules avec docker-compose
Que faire si vous créez accidentellement un modèle
Que faire si vous avez installé Java pour OS X sur macOS
Que faire quand Pour installer la version manquante, exécutez `gem install bundler: 2.1.4`
Que faire si vous obtenez une erreur de nombre d'arguments erroné dans binding.pry
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
Que faire si vous obtenez Impossible d'enregistrer la table principale dans un fichier après l'importation d'un projet dans Eclipse
[Rails] Que faire si vous obtenez une erreur indiquant "Impossible de trouver un moteur d'exécution JavaScript." Lors de l'exécution de la commande rails dans Catalina
[Java] Que faire si vous obtenez une erreur dans Eclipse disant "Non autorisé au niveau source inférieur à 1.X"
Que faire si vous obtenez une erreur indiquant "Veuillez saisir une valeur valide" lors de l'obtention avec Rails datetime_field
Que faire si le message d'erreur "Impossible de trouver un moteur d'exécution JavaScript" s'affiche lors du démarrage du serveur rails
Que faire si une erreur d'analyseur SAX se produit lors de l'utilisation de Liferay 7 / DXP sur AWS
Que faire si vous obtenez une erreur «302» dans le code de test du contrôleur dans Rails
Que faire si vous vous fâchez contre OpenSSL avec Pyenv Install
Que faire en cas de problème pendant Content Assist
[Rails] Que faire si vous ne pouvez pas obtenir de paramètres avec form_with
Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit
Que faire si vous sélectionnez un JRE dans Eclipse et obtenez "Le JRE sélectionné ne prend pas en charge le niveau de conformité actuel 11"
Que faire si vous vous déconnectez en raison d'une erreur de certificat SSL lors de l'exécution de Jenkins sur votre Mac
Que faire quand git status indique Modifications non préparées pour la validation: après git add.
Que faire si vous ne pouvez pas installer le plug-in à partir d'Eclipse Marketplace
Que faire si le processus Tomcat reste lorsque vous arrêtez Tomcat dans Eclipse
Que faire lorsque "call'Hoge.connection 'pour établir une connexion" apparaît sur les rails c
Remarques sur la marche à suivre lorsqu'une exception WebView ClassNotFoundException se produit dans JavaFX 12
Que faire si vous transmettez des informations incorrectes
Qu'utilisez-vous lors de la conversion en String?
Que faire si l'application dont le nom est appName est déjà enregistrée. Lorsque vous essayez de démarrer GlassFish
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Que faire si vous obtenez l'erreur Trop long sans sortie (dépassé 10m0s) dans CircleCI
Que faire lorsque vous pensez que vous ne pouvez pas Groovy-> Java avec IntelliJ IDEA CE
Que faire si vous obtenez Impossible de localiser le répertoire Gemfile ou .bundle /
Que faire si vous obtenez une exception javax.net.ssl.SSLHandshakeException: connexion de l'hôte distant fermée pendant l'établissement de liaison dans IBM JDK
Que faire si une exception ClassNotFoundException se produit lors du démarrage de Tomcat
Que faire si TextToSpeech ne fonctionne pas sur Android 11
Comment exécuter Java EE Tutial sur github sur Eclipse
Que faire si vous ne pouvez pas obtenir le texte d'un élément dans Selenium
Que faire si vous ne pouvez pas exécuter avec la commande "nom du package Java / nom de la classe"
[Solution] Que faire si vous obtenez une erreur Docker "ERREUR: Impossible de se connecter au démon Docker sous unix: ///var/run/docker.sock. Le démon docker est-il en cours d'exécution?"