5 10 2017
JDK 9에서 eclipse 실행이 안될때
JDK 9가 나오자 마자 집에다 설치해놓았는데… 멀쩡하게 잘 되던 eclipse가 어느날 실행이 안되는 경우가 있다.
항상 그런건 아닌거 같고, 내 경우에는 eclipse를 띄워놨는데 갑자기 컴퓨터가 얼어버리는-_- 바람에 본체의 리셋 버튼 눌러서 강제로 재시작했는데, 그때부터 이클립스가 그냥 실행이 안되었다.
대략적인 증상은 eclipse를 띄워보면 eclipse의 로고 화면이 썼다가 순식간에 사라진 뒤, 실행에 오류가 발생했다며, 로그를 참고하라고 표시된다.
로그를 살펴보면, Exception 발생의 스택 추적 기록이 있는데, 대략 아래와 비슷한 내용이다.
1234567891011121314151617181920212223242526272829303132333435363738 !ENTRY org.eclipse.osgi 4 0 2017-10-05 10:31:35.869!MESSAGE Application error!STACK 1org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstructat 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)at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:491)at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:505)at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:204)at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:614)at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151)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 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:564)at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)at org.eclipse.equinox.launcher.Main.run(Main.java:1499)Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstructat org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124)at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399)... 22 moreCaused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.100.v20170421-1418at 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)... 24 more
이런 경우, 아마도 JAVA 9에 새로 추가된 모듈 시스템 직소에 의해서, eclipse 실행에 필수적인 모듈을 불러오지 못해서 그런 것 같다.
이클립스 웹사이트의 Configure Eclipse for Java 9 항목을 보면 이것저것 설정할 내용이 나와있지만, 일단 eclipse.ini 파일에 아래 옵션을 추가해주면 정상적으로 실행된다.
1 --add-modules=ALL-SYSTEM
Let’s Encrypt로 SSL 인증서 교체 XAMPP + PHP + 워드프레스 업그레이드