Ticket #920 (closed defect: fixed)
Legacy layer issues with Linux
| Reported by: | bdezonia | Owned by: | bdezonia |
|---|---|---|---|
| Priority: | major | Milestone: | imagej-2.0-beta1 |
| Component: | ij-core | Severity: | serious |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
Running Ubuntu 11.10 with OpenJDK 1.6.0_23. At launch time exception is thrown (below). Any operation that requires the legacy layer is then inoperable.
[ERROR] Invalid service: imagej.legacy.LegacyService
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at imagej.ServiceHelper.createService(ServiceHelper.java:184)
at imagej.ServiceHelper.createExactService(ServiceHelper.java:148)
at imagej.ServiceHelper.loadService(ServiceHelper.java:130)
at imagej.ServiceHelper.loadServices(ServiceHelper.java:108)
at imagej.ImageJ.createContext(ImageJ.java:85)
at imagej.ImageJ.createContext(ImageJ.java:57)
at imagej.Main.main(Main.java:51)
Caused by: java.lang.NoClassDefFoundError: Lcom/sun/tools/javac/Main;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
at java.lang.Class.getDeclaredField(Class.java:1897)
at imagej.util.ClassUtils.getField(ClassUtils.java:214)
at imagej.legacy.OptionsSynchronizer.setIJ1CompilerTarget(OptionsSynchronizer.java:605)
at imagej.legacy.OptionsSynchronizer.compilerOptions(OptionsSynchronizer.java:195)
at imagej.legacy.OptionsSynchronizer.updateIJ1SettingsFromIJ2(OptionsSynchronizer.java:97)
at imagej.legacy.LegacyService.updateIJ1Settings(LegacyService.java:196)
at imagej.legacy.LegacyService.<init>(LegacyService.java:138)
... 11 more
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 20 more
Change History
comment:2 Changed 3 weeks ago by bdezonia
- Owner changed from bdezonia to curtis
- Status changed from new to assigned
Installed Sun's Java and get similar (same?) errors.
comment:3 Changed 3 weeks ago by bdezonia
Orignal stack trace is from my home laptop's Linux OS Ubuntu 11.10 install using OpenJDK.
Here is the stack trace on my virtual Linux OS Ubuntu 11.10 install using Sun's java:
[ERROR] Invalid service: imagej.legacy.LegacyService
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at imagej.ServiceHelper.createService(ServiceHelper.java:184)
at imagej.ServiceHelper.createExactService(ServiceHelper.java:148)
at imagej.ServiceHelper.loadService(ServiceHelper.java:130)
at imagej.ServiceHelper.loadServices(ServiceHelper.java:108)
at imagej.ImageJ.createContext(ImageJ.java:85)
at imagej.ImageJ.createContext(ImageJ.java:57)
at imagej.Main.main(Main.java:51)
Caused by: java.lang.NoClassDefFoundError: Lcom/sun/tools/javac/Main;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Unknown Source)
at java.lang.Class.getDeclaredField(Unknown Source)
at imagej.util.ClassUtils.getField(ClassUtils.java:214)
at imagej.legacy.OptionsSynchronizer.setIJ1CompilerTarget(OptionsSynchronizer.java:605)
at imagej.legacy.OptionsSynchronizer.compilerOptions(OptionsSynchronizer.java:195)
at imagej.legacy.OptionsSynchronizer.updateIJ1SettingsFromIJ2(OptionsSynchronizer.java:97)
at imagej.legacy.LegacyService.updateIJ1Settings(LegacyService.java:196)
at imagej.legacy.LegacyService.<init>(LegacyService.java:138)
... 11 more
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 20 more

Perhaps we need to avoid OpenJDK. But I cannot find such a recommendation on our webserver.