Не удалось запустить Spring Tool Suite после установки JDK 9

Я установил Spring Tool Suite (версия 3.9.0). Раньше работал исправно. После установки JDK 9 я не могу запустить Spring Tool Suite.

Я мог видеть ниже в журнале ошибок, хотя:

Проблема действительно из-за JDK 9? Пожалуйста, направьте меня в правильном направлении, чтобы решить проблему.

Спасибо.

Да, это связано с Java 9. Вероятно, в Eclipse будет исправлена ​​ошибка (см. https://bugs.eclipse.org/bugs/show_bug.cgi?id=525583), но пока можно использовать обходной путь: добавить _1_ в конфигурацию запуска в eclipse.ini. Полный пример см. на странице https://bugs.eclipse.org/bugs/show_bug.cgi?id=493761.


person Abhi.P    schedule 06.10.2017    source источник
comment
Всем привет, проблему решил сам. Ссылались на форум Eclipse о том, как настроить Eclipse для JDK9. Пришлось добавить следующие vmargs в STS.ini (или eclipse.ini для Eclipse): --add-modules=ALL-SYSTEM После добавления файл STS.ini или eclipse.ini будет выглядеть как показано ниже: -vmargs -Dosgi.requiredJavaVersion=1.8 --add-modules=ALL-SYSTEM Пожалуйста, загляните в [ссылка][1] для получения дополнительной информации. Спасибо. [1]: wiki.eclipse.org/   -  person Naman    schedule 06.10.2017
comment
Спасибо... внес те же изменения в файл STS.ini, чтобы решить проблему.   -  person Abhi.P    schedule 06.10.2017


Ответы (2)


В Java 9 пакет javax.annotation находится в модуле, который по умолчанию невидим в среде выполнения Java 9. Обходной путь действительно состоит в том, чтобы указать среде выполнения Java явно загружать этот модуль.

person ewramner    schedule 06.10.2017
comment
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy в org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450) в org.eclipse.e4.core.internal.di.Requestor.disposed (Requestor.java:156) в org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78) в org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt .java:111) в org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74) в org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178) ) в org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:99) в org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:141) ) по адресу org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) по адресу org. eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) в org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) в org.eclipse.osgi.internal.framework. EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) в org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) в org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java: 112) в org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) в org.eclipse.osgi.container.Module.publishEvent(Module.java:476) в org.eclipse.osgi.container .Module.doStop(Module.java:634) в org.eclipse.osgi.container.Module.stop(Module.java:498) в org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202) в org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$ EquinoxSystemModule$1.run(EquinoxBundle.java:165) в java.base/java.lang.Thread.run(Thread.java:844) Причина: java.lang.ClassNotFoundException: javax.annotation.PreDestroy не может быть найден орг. eclipse.e4.core.di_1.6.100.v20170421-1418 в org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433) в org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader .java:395) в org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387) в org.eclipse.osgi.internal.loader. ModuleClassLoader.loadClass(ModuleClassLoader.java:150) в java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) - person Abhi.P; 06.10.2017

Это означает, что многим платформам, возможно, придется обновить свою конфигурацию запуска, если они хотят работать поверх среды выполнения Java 9. Или им придется «модулировать» свой код и импортировать пакет javax.annotation в свои модули.

Этот ответ, который я дал недавно, может помочь вам понять причину сбоя. Хотя рамки могут быть разными, но причина одна и та же.

person Stéphane Appercel    schedule 06.10.2017