0

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 @user.home/.xmind/secure_storage_linux
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data ../workspace -eclipse.keyring @user.home/.xmind/secure_storage_linux

!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: '@user.home/.xmind/secure_storage_linux'

!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 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: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 java.base/java.lang.ClassLoader.loadClass(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 java.base/java.lang.Thread.run(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 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 21 more

I 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.

2
  • Can you put up the list of relevant updates (look in file /var/log/apt/history.log for the update time and list all the updated packages. Apr 30, 2019 at 14:49
  • @jknappen there is no such log file on my computer May 3, 2019 at 22:36

3 Answers 3

2

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 mode

Step 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

6
  • It doesn't work. I have openjdk 8, openjdk 11 and oracle 12 and I tried with every version of JVM and none of them work with your suggestion. May 11, 2019 at 6:03
  • You have to add two lines at the begining: "-vm" and in next line the path to java "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java" in this case. It will work. Jul 13, 2019 at 22:18
  • The crucial info you might add in the answer seems to be that it needs to be at the start and/or in separate lines. Attached as a one line in the end and it didn't work. At the start and split up it does. Thanks for the answer. Jan 3, 2020 at 20:45
  • @FrankHopkins It is unclear to me exactly where this vm option is supposed to go and what the line is supposed to look like - it's saying unrecognized option -vm/usr/lib/jvm...
    – Michael
    Jun 3, 2020 at 23:35
  • 1
    @Michael Added a separate answer to provide a bit nicer view of the formating Jun 6, 2020 at 16:53
2

For 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...

0

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .