mopemope/meghanada-emacs

1.1.0 meghanada-run-junit-class throws exception NoClassDefFoundError Lcom/sun/source/tree/LineMap

Closed this issue · 6 comments

Regression appears to have been introduced in 1.1.0, as 1.0.14 and lower do not throw this exception when meghanada-run-junit-class is run.

Running experiment.AppTest

Exception in thread "pool-2-thread-1" java.lang.NoClassDefFoundError: Lcom/sun/source/tree/LineMap;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
	at java.lang.Class.getDeclaredFields(Class.java:1916)
	at org.nustaq.serialization.FSTClazzInfo.getAllFields(FSTClazzInfo.java:249)
	at org.nustaq.serialization.FSTClazzInfo.createFields(FSTClazzInfo.java:355)
	at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:127)
	at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:129)
	at org.nustaq.serialization.FSTClazzNameRegistry.addClassMapping(FSTClazzNameRegistry.java:98)
	at org.nustaq.serialization.FSTClazzNameRegistry.registerClassNoLookup(FSTClazzNameRegistry.java:85)
	at org.nustaq.serialization.FSTClazzNameRegistry.registerClass(FSTClazzNameRegistry.java:81)
	at org.nustaq.serialization.FSTConfiguration.registerClass(FSTConfiguration.java:788)
	at meghanada.store.Serializer.getFST(Serializer.java:46)
	at meghanada.store.Serializer.asByte(Serializer.java:122)
	at meghanada.store.ProjectDatabase.setSerializeBlobData(ProjectDatabase.java:194)
	at meghanada.store.ProjectDatabase.putObject(ProjectDatabase.java:175)
	at meghanada.store.ProjectDatabase.lambda$storeObjects$4(ProjectDatabase.java:459)
	at jetbrains.exodus.entitystore.PersistentEntityStoreImpl.computeInTransaction(PersistentEntityStoreImpl.java:738)
	at meghanada.store.ProjectDatabase.storeObjects(ProjectDatabase.java:455)
	at meghanada.store.ProjectDatabase.mergeAndStore(ProjectDatabase.java:275)
	at meghanada.store.ProjectDatabase.lambda$initWorker$1(ProjectDatabase.java:224)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.sun.source.tree.LineMap
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 23 more

Tests run: 1, Failures: 0, Ignore: 0, Time elapsed: 178.6 ms
Success

@halcyon Please check if JAVA_HOME is correct.
And check if $JAVA_HOME/lib/tools.jar exists.

± % echo $JAVA_HOME
/home/ksm/.asdf/installs/java/zulu-8.0.212
± % ls $JAVA_HOME/lib/tools.jar
/home/ksm/.asdf/installs/java/zulu-8.0.212/lib/tools.jar

When I comment out this line the problem no longer occurs. It looks like it could be related to this commit.

@halcyon Ah. I was wrong. I will fix it soon.

Thank you for meghanada, it's awesome! I'm sure you are already aware, but just in case - tools.jar was removed in JDK 9 and higher .

Fixed.