After I upgraded Ubuntu to 18.04 from 16.04, XMind 8 (update8-linux) stopped working so I ran across a fix that consisted in adding a few lines to the .ini file. Everything was working great for a few months (even I created .desktop entry so I could launch the app from the dock). Until last week I couldn't open XMind anymore. The error prompt says to look at the .log file and this is the output:
!SESSION 2019-04-25 22:01:01.176 -----------------------------------------------
eclipse.buildId=R3.7.8.201807240049
java.version=11.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments: -eclipse.keyring @
Command-line arguments: -os linux -ws gtk -arch x86_64 -data ../workspace -eclipse.keyring @
!ENTRY org.xmind.cathy 1 0 2019-04-25 22:01:03.880
!MESSAGE Skip unrecognized command line argument: '-eclipse.keyring'
!ENTRY org.xmind.cathy 1 0 2019-04-25 22:01:03.881
!MESSAGE Skip unrecognized command line argument: '@
!ENTRY org.eclipse.osgi.compatibility.state.nl_ko 2 0 2019-04-25 22:01:04.019
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_ko [846] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_zh_TW 2 0 2019-04-25 22:01:04.019
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_zh_TW [851] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_fr 2 0 2019-04-25 22:01:04.019
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_fr [843] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_pt_BR 2 0 2019-04-25 22:01:04.019
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_pt_BR [847] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_it 2 0 2019-04-25 22:01:04.019
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_it [844] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_da 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_da [840] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_ar 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_ar [839] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_ja 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_ja [845] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_es 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_es [842] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_zh 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_zh [850] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_ru 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_ru [848] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_de 2 0 2019-04-25 22:01:04.020
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_de [841] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi.compatibility.state.nl_sl 2 0 2019-04-25 22:01:04.021
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nl_sl [849] Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
!ENTRY org.eclipse.osgi 4 0 2019-04-25 22:01:04.022
!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:386) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294) at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:490) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:504) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:203) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:626) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) at org.xmind.cathy.internal.CathyApplication.start(CathyApplication.java:137) 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 (Native Method) at (NativeMethodAccessorImpl.java:62) at (DelegatingMethodAccessorImpl.java:43) at (Method.java:566) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610) at org.eclipse.equinox.launcher.Main.run(Main.java:1519) at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375) ... 23 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) at (ClassLoader.java:521) ... 25 more
!ENTRY org.eclipse.e4.ui.workbench 4 0 2019-04-25 22:01:04.033
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:426) at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:154) 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:176) at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:106) at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:139) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) 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:156) 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:191) at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165) at (Thread.java:834)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) at (ClassLoader.java:521) ... 21 moreI tried changing between JDK versions and distributions (oracle and openjdk) but nothing worked. I tried modifying the .ini file again, and it still didn't work. Is there any fix to this error? Thanks for your time.
23 Answers
You will need java-8-openjdk installed.
Step 1: apt install openjdk-8-jre Step 2: set default jre
> sudo update-alternatives --config java
> There are 2 choices for the alternative java (providing
> /usr/bin/java).
>
> Selection Path
> Priority Status
> ------------------------------------------------------------
> * 0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 auto mode 1
> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
> 2 /usr/lib/jvm/jdk-12.0.1/bin/java 2
> manual modeStep 3: copy the jre 8 location Step 4: Update Xmind.ini file with following option -vm /usr/lib/jvm/java-8-openjdk-amd64/jre/bin
6For me the approach of ebenash worked. My XMind.ini file looked afterwards like this:
$ cat XMind_amd64/XMind.ini
-vm
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin
-configuration
./configuration
-data
../workspace(with more below that...).
Note that I had to put a linebreak between -vm and the actual value /usr/lib/jvm...
This is how I managed to make it run again:
- Step 1: Select the java-8-openjdk option using the command
sudo update-alternatives --config java - Step 2: the earlier fix to the .ini file consisted in adding this line at the end of the file
--add-modules=ALL-SYSTEM. Remove this line. - Step 3: Relaunch the XMind program and it should work.
It seems XMind doesn't work with later versions of JVM, it needs Java 8 but can't run with the --add-modules option since it was introduced in later versions.