scijava / scripting-java

JSR-223-compliant Java scripting plugin
Other
8 stars 4 forks source link

Unexpected "cannot access java.lang.Object bad class file" error #7

Open ctrueden opened 9 years ago

ctrueden commented 9 years ago

From @rasband:

I am using Fiji 2.0.0-rc-25/1.49p and Java 1.8.0_25 [64-bit] on OS X 10.10.1.

When I open the "Red_And_Blue.java" file in the Script Editor and click "Run" I get this exception:

Started Red_And_Blue.java at Sun Mar 01 16:33:21 EST 2015
Compiling 1 file in /var/folders/sj/hs9p4kxn1z9brlkf83ycm4qr0000gn/T/java218593696282971329
/var/folders/sj/hs9p4kxn1z9brlkf83ycm4qr0000gn/T/java218593696282971329/src/main/java/Red_And_Blue.java:8: cannot access java.lang.Object
bad class file: ZipFileIndexFileObject[/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/lib/ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]
class file has wrong version 52.0, should be 50.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class Red_And_Blue implements PlugIn {
       ^
org.scijava.minimaven.JavaCompiler$CompileError: Compile error: 1
    at org.scijava.minimaven.JavaCompiler.call(JavaCompiler.java:80)
    at org.scijava.minimaven.MavenProject.build(MavenProject.java:477)
    at org.scijava.minimaven.MavenProject.build(MavenProject.java:406)
    at org.scijava.minimaven.MavenProject.build(MavenProject.java:391)
    at org.scijava.plugins.scripting.java.JavaEngine.eval(JavaEngine.java:154)
    at org.scijava.script.ScriptModule.run(ScriptModule.java:175)
    at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
    at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
    at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
    at org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

See also:

My initial guess would be something relating to the fact that ImageJ2 ships a Java 6 tools.jar file.

ctrueden commented 9 years ago

The following plugin source reproduces this problem when running ImageJ2 using Java 8 on OS X:

import ij.plugin.PlugIn;
import ij.IJ;

public class Bare_PlugIn implements PlugIn {
    @Override
    public void run(String arg) {
        IJ.showMessage("Hello world!");
    }
}

The problem does not occur with Java 1.6.0_65 on my system.