1

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.

!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

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.

I tried using the module java.se.ee that has been answered in Why won't eclipse oxygen start (for the first time)?. And still the eclipse E4 application cannot find the dependency.

Can someone help me with this?

My target repositories that are in my target file are (full file can be view here https://www.codepile.net/pile/xO8oR272):

<repository location="http://download.eclipse.org/eclipse/updates/4.11/" />
<repository location="http://download.eclipse.org/releases/2019-03/"/>
<repository location="http://download.eclipse.org/nattable/releases/1.5.0/repository/"/>

<repository location="http://download.eclipse.org/nebula/snapshot/"/>
<repository location="http://download.eclipse.org/nebula/incubation/snapshot/"/>
<repository location="http://download.eclipse.org/nattable/snapshots/latest/repository/"/>

Config.ini file looks like:

#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
JimmyD
  • 2,629
  • 4
  • 29
  • 58
  • Edit my post with the target informatin – JimmyD Jun 17 '19 at 09:17
  • You should be around long enough to know to **not** put such information into comments but to edit your question instead. – GhostCat Jun 17 '19 at 09:18
  • Is javax.annotations loaded in the config.ini (or bundles.info if the config.ini uses org.eclipse.equinox.simpleconfigurator). Are the start levels configured to the recommended values (which changed fairly recently). – greg-449 Jun 17 '19 at 09:29
  • It uses org.eclipse.equinox.simpleconfigurator_1.2.1.v20180131-1435.jar – JimmyD Jun 17 '19 at 09:53
  • Which version of Eclipse Platform are you using? You should upgrade to the latest version because the old versions do not work with missing `java.se.ee` modules in Java 11/12. – ZhekaKozlov Jun 17 '19 at 10:11
  • Eclispe 2019-03 on windows x64. – JimmyD Jun 17 '19 at 11:14
  • The versions of the various plugins in the config.ini appear to be Eclipse Oxygen (probably 4.7.3a) **not** 2019-03 – greg-449 Jun 17 '19 at 12:53
  • Great do I need to manually update all the used plugins to the newest value for migrating to 2019-03? – JimmyD Jun 17 '19 at 13:01
  • 1
    You just need to use a Target Platform which is 2019-03 – greg-449 Jun 18 '19 at 07:00
  • My target file already has the newest repo configured. Also all the unit there are versio 0.0.0 so normally it should download the newest version (if I'm correct). I also add the full target file to the post. – JimmyD Jun 18 '19 at 09:46
  • That target file looks like it is for Eclipse PDE. If you are using Tycho to build the RCP you must be using a different target for that because Tycho won't work with that format of target file. – greg-449 Jun 19 '19 at 06:41

1 Answers1

0

Changed my target file to the new format and now it works. Target file looks like:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target includeMode="feature" name="Running Platform">
    <locations>
        <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
            <repository location="http://download.eclipse.org/nattable/releases/1.5.0/repository/"/>
            <unit id="org.eclipse.nebula.widgets.nattable.core.feature.feature.group" version="1.5.0.201703192131"/>
            <unit id="org.eclipse.nebula.widgets.nattable.extension.e4.feature.feature.group" version="1.1.0.201703192131"/>
            <unit id="org.eclipse.nebula.widgets.nattable.extension.glazedlists.feature.feature.group" version="1.5.0.201703192131"/>
            <unit id="org.eclipse.nebula.widgets.nattable.extension.nebula.feature.feature.group" version="1.1.0.201703192131"/>
            <unit id="org.eclipse.nebula.widgets.nattable.extension.poi.feature.feature.group" version="1.5.0.201703192131"/>
        </location>
        <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
            <repository location="http://download.eclipse.org/releases/2019-06/201904191000"/>
            <unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
            <unit id="org.eclipse.platform.sdk" version="0.0.0"/>
            <unit id="org.eclipse.wst.common_core.feature.feature.group" version="0.0.0"/>
            <unit id="org.eclipse.wst.xml_core.feature.feature.group" version="0.0.0"/>
            <unit id="org.eclipse.datatools.connectivity" version="0.0.0"/>
            <unit id="org.eclipse.emf.databinding" version="0.0.0"/>
            <unit id="org.eclipse.emf.ecore.edit" version="0.0.0"/>
            <unit id="org.eclipse.wb.swing.FormLayout.lib" version="0.0.0"/>
            <unit id="org.hamcrest.core" version="0.0.0"/>
            <unit id="org.junit" version="0.0.0"/>
        </location>
        <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
            <repository location="http://download.eclipse.org/nebula/releases/latest"/>
            <unit id="org.eclipse.nebula.widgets.pshelf.css.feature.feature.group" version="1.0.0.201812241324"/>
            <unit id="org.eclipse.nebula.widgets.pshelf.feature.feature.group" version="1.0.0.201812241324"/>
        </location>
        <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
            <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20190226160451/repository"/>
            <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
            <unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
            <unit id="javax.activation" version="1.1.0.v201211130549"/>
            <unit id="javax.mail" version="1.4.0.v201005080615"/>
            <unit id="javax.xml.ws" version="2.1.0.v200902101523"/>
            <unit id="org.apache.batik.util.gui" version="1.9.1.v20180227-1645"/>
            <unit id="org.apache.commons.collections" version="3.2.2.v201511171945"/>
            <unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
            <unit id="org.apache.commons.lang" version="0.0.0"/>
            <unit id="org.apache.commons.net" version="3.2.0.v201305141515"/>
            <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
            <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
            <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
            <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
            <unit id="java_cup.runtime" version="0.0.0"/>
        </location>

    </locations>
    <environment>
        <arch>x86_64</arch>
        <os>win32</os>
        <ws>win32</ws>
        <nl>en_US</nl>
    </environment>
</target>
JimmyD
  • 2,629
  • 4
  • 29
  • 58