title: Eclipse E4 on Java 12
body: <p>I'm migration our Eclipse E4 application to jre12 (8 to 12 migration). Everything is working fine when I run the application in my dev envirimont from inside Eclipse. When I build the application using Tycho I'm getting an error when starting the application.</p>
  
  <pre><code>!SESSION 2019-06-17 10:53:38.481 -----------------------------------------------
  eclipse.buildId=unknown
  java.version=12.0.1
  java.vendor=Oracle Corporation
  BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
  Framework arguments:  -clearPersistedState
  Command-line arguments:  -os win32 -ws win32 -arch x86_64 -clearPersistedState
  
  !ENTRY org.eclipse.osgi 4 0 2019-06-17 10:53:44.449
  !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)
      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.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:149)
      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:567)
      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/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)
      ... 18 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:521)
      ... 20 more
  
  !ENTRY org.eclipse.e4.ui.workbench 4 0 2019-06-17 10:53:44.468
  !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)
      at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:99)
      at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:141)
      at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
      at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
      at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
      at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
      at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
      at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
      at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168)
      at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
      at org.eclipse.osgi.container.Module.doStop(Module.java:634)
      at org.eclipse.osgi.container.Module.stop(Module.java:498)
      at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)
      at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
      at java.base/java.lang.Thread.run(Thread.java:835)
  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:521)
      ... 21 more
  </code></pre>
  
  <p>The javax.annotations is configured as a required plugin in our custom plugin.
  Also I added javax.annotations to our maven file. When I check the libraries inside the builded project the javax.annotation_1.2.0.v201602091430.jar is include inside the plugins directory. </p>
  
  <p>I tried using the module java.se.ee that has been answered in <a href="https://stackoverflow.com/questions/46369792/why-wont-eclipse-oxygen-start-for-the-first-time">Why won&#39;t eclipse oxygen start (for the first time)?</a>.
  And still the eclipse E4 application cannot find the dependency.</p>
  
  <p>Can someone help me with this?</p>
  
  <p>My target repositories that are in my target file are (full file can be view here <a href="https://www.codepile.net/pile/xO8oR272" rel="nofollow noreferrer">https://www.codepile.net/pile/xO8oR272</a>):</p>
  
  <pre><code>&lt;repository location="http://download.eclipse.org/eclipse/updates/4.11/" /&gt;
  &lt;repository location="http://download.eclipse.org/releases/2019-03/"/&gt;
  &lt;repository location="http://download.eclipse.org/nattable/releases/1.5.0/repository/"/&gt;
  
  &lt;repository location="http://download.eclipse.org/nebula/snapshot/"/&gt;
  &lt;repository location="http://download.eclipse.org/nebula/incubation/snapshot/"/&gt;
  &lt;repository location="http://download.eclipse.org/nattable/snapshots/latest/repository/"/&gt;
  </code></pre>
  
  <p>Config.ini file looks like:</p>
  
  <pre><code>#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
  #Mon Jun 17 10:48:39 CEST 2019
  serverLocation=Development
  eclipse.p2.profile=DefaultProfile
  osgi.framework=file\:plugins/org.eclipse.osgi_3.12.100.v20180210-1608.jar
  equinox.use.ds=true
  ds.delayed.keepInstances=true
  osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.2.1.v20180131-1435.jar@1\:start
  org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpleconfigurator/bundles.info
  eclipse.product=CR-IT_client.product
  osgi.framework.extensions=reference\:file\:org.eclipse.equinox.region_1.4.0.v20170117-1425.jar,reference\:file\:org.eclipse.equinox.weaving.hook_1.2.0.v20160929-1449.jar,reference\:file\:org.eclipse.osgi.compatibility.state_1.1.0.v20170516-1513.jar
  osgi.bundles.defaultStartLevel=4
  eclipse.p2.data.area=@config.dir/../p2
  eclipse.application=org.eclipse.e4.ui.workbench.swt.E4Application
  </code></pre>