Discussion:
[tycho-user] Tycho + J9 + Oxygen2 + Tests
Dietrich, Christian
2018-01-09 15:21:37 UTC
Permalink
Hi,

i cloned the head of the tycho repo and applied this patch:
https://git.eclipse.org/r/#/c/114480/

now i try to build a sample xtext project with tycho. this works fine but
the tests fail:

do i miss something. you can find the sample repo here.
https://github.com/cdietrich/j9-tycho-xtext

and this is the log

Thanks, Christian

!SESSION 2018-01-09 16:14:13.375
-----------------------------------------------
eclipse.buildId=unknown
java.version=9.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=de_DE
Framework arguments: -application
org.eclipse.tycho.surefire.osgibooter.uitest -testproperties
/Users/dietrich/eclipse-workspaces/oxy1a___conti/org.xtext.example.mydsl5.parent/org.xtext.example.mydsl5.ui.tests/target/surefire.properties
Command-line arguments: -data
/Users/dietrich/eclipse-workspaces/oxy1a___conti/org.xtext.example.mydsl5.parent/org.xtext.example.mydsl5.ui.tests/target/work/data
-application org.eclipse.tycho.surefire.osgibooter.uitest -testproperties
/Users/dietrich/eclipse-workspaces/oxy1a___conti/org.xtext.example.mydsl5.parent/org.xtext.example.mydsl5.ui.tests/target/surefire.properties

!ENTRY org.eclipse.swt.win32.win32.x86_64 2 0 2018-01-09 16:14:17.160
!MESSAGE Could not resolve module: org.eclipse.swt.win32.win32.x86_64 [174]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(&
(osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86_64))"


!ENTRY org.eclipse.equinox.launcher.win32.win32.x86_64 2 0 2018-01-09
16:14:17.161
!MESSAGE Could not resolve module:
org.eclipse.equinox.launcher.win32.win32.x86_64 [173]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(&
(osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86_64))"


!ENTRY org.eclipse.equinox.launcher.gtk.linux.x86_64 2 0 2018-01-09
16:14:17.162
!MESSAGE Could not resolve module:
org.eclipse.equinox.launcher.gtk.linux.x86_64 [175]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(&
(osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86_64))"


!ENTRY org.eclipse.swt.gtk.linux.x86_64 2 0 2018-01-09 16:14:17.162
!MESSAGE Could not resolve module: org.eclipse.swt.gtk.linux.x86_64 [176]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(&
(osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86_64))"


!ENTRY org.eclipse.e4.ui.swt.gtk 2 0 2018-01-09 16:14:17.163
!MESSAGE Could not resolve module: org.eclipse.e4.ui.swt.gtk [177]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(
osgi.ws=gtk)"


!ENTRY org.eclipse.osgi 4 0 2018-01-09 16:14:17.164
!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.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.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31)
at
org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:120)
at
org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37)
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)
at org.eclipse.equinox.launcher.Main.main(Main.java:1472)
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)
... 26 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)
... 28 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2018-01-09 16:14:17.171
!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:844)
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
Dietrich, Christian
2018-01-09 15:40:52 UTC
Permalink
doing a explicit

<tycho.testArgLine>-XstartOnFirstThread
--add-modules=ALL-SYSTEM</tycho.testArgLine>

seems to help

but i am not sure fix this really should be done explictely
Sievers, Jan
2018-01-09 16:48:58 UTC
Permalink
Personally I am somewhat hesitant to try to automatically compensate for what seems to me like incompatibilities introduced by Java 9.

Regards
Jan


On 09.01.18, 16:41, "tycho-user-***@eclipse.org on behalf of Dietrich, Christian" <tycho-user-***@eclipse.org on behalf of ***@itemis.de> wrote:

doing a explicit

<tycho.testArgLine>-XstartOnFirstThread --add-modules=ALL-SYSTEM</tycho.testArgLine>

seems to help

but i am not sure fix this really should be done explictely
Dietrich, Christian
2018-01-09 16:52:18 UTC
Permalink
so you would go for the way of explictely passing that argument?
Mickael Istria
2018-01-09 17:06:21 UTC
Permalink
Hi,

FWIW, I agree with Jan that Tycho shouldn't try to hide complexity brought
by Java 9 or OSGi by automatically enabling workarounds.
Instead, I imagine typical profiles can work. If so, documenting them on
the wiki and sharing them in blog posts/mailing-list/conferences may do the
trick without hiding this sad piece of reality, and even better, by
educating developers so they fully understand the problems and can consider
better solutions for their specific use-cases.

Cheers,

Loading...