1

Newly, I've installed an application named Afra (https://rebeca-lang.org/alltools/Afra) which it seems have been developed based on Eclipse. When I'm going to run it won't start and errors below appear in the log file :

(for more information, I use a 64-bit version of windows 10 plus java 10)

!SESSION 2020-09-22 21:29:21.395 -----------------------------------------------
eclipse.buildId=unknown
java.version=10.0.2
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 2020-09-22 21:29:22.797
!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.rebecalang.afra.ideplugin.Application.start(Application.java:20)
    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(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    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)
    ... 23 more
  • 1
    It looks like the application was built with a version of Eclipse which is too old to run with Java 10. You will need to use Java 8. – greg-449 Sep 22 '20 at 18:35
  • Related (probably duplicate): https://stackoverflow.com/questions/52701459/i-cant-use-postconstruct-and-postdestroy-with-java-11 – Hulk Sep 22 '20 at 18:36
  • These JavaEE features have been deprecated since Java 9. Although they should still exist in Java 10, as they have been removed in Java 11. – Hulk Sep 22 '20 at 18:39
  • What greg-449 says. As a solution you can [download this ZIP file](https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.zip), create the subfolder `jre` in the Afra installation directory and extract the ZIP into it, so that `\jre\bin\java.exe` exists. – howlger Sep 22 '20 at 22:09
  • @howlger thank you so much. your solution worked for me. :)) – Maghsood Salimi Sep 23 '20 at 18:12

1 Answers1

1

This looks very much like Afra is based on an older Eclipse platform, and it is caused by using Java 10 instead of Java 8 to run it.

You can do one of the following:

  • Add Java 8 (64-bit) to the Afra installation, e.g. by download this ZIP file, create the subfolder jre in the Afra installation directory and extract the ZIP into it, so that <Afra-installation-dir>\jre\bin\java.exe exists
  • Install Java 8 (64-bit) into your system and make sure that Afra runs with it, e.g. by download a Java 8 (64-bit) JDK or JRE from e.g. AdoptOpenJDK.net, install it and in the case it is not used to run Afra, edit the *.ini file of Afra
howlger
  • 31,050
  • 11
  • 59
  • 99