NOTICE! This is a static HTML version of a legacy Fiji BugZilla bug.

The Fiji project now uses GitHub Issues for issue tracking.

Please file all new issues there.

Bug 1008 - Fiji.app double clicking not starting up Fiji in OSX / Java8
Fiji.app double clicking not starting up Fiji in OSX / Java8
Status: RESOLVED FIXED
Product: Fiji
Classification: Unclassified
Component: Other
unspecified
Macintosh Mac OS
: P4 normal
Assigned To: Curtis Rueden
Depends on:
Blocks:
 
Reported: 2015-02-20 07:27 CST by kota
Modified: 2015-12-07 16:53 CST
4 users (show)

See Also:

Description kota 2015-02-20 07:27:29 CST
In JRE 1.8 environment, double clicking Fiji.app does not launch Fiji. 

From command line it's possible to start up Fiji by 

   <fiji no-jre root>/Contents/MacOS/ImageJ-OSX

but then there will be error messages printed in console. I pasete them below. 

---

miura$ ./ImageJ-macosx
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
java.lang.IllegalArgumentException: Cannot handle replace call to list in ij.Menus's public static synchronized java.lang.String[] getPlugins()
	at net.imagej.patcher.CodeHacker.replaceCallInMethod(CodeHacker.java:725)
	at net.imagej.patcher.CodeHacker.replaceCallInMethod(CodeHacker.java:650)
	at net.imagej.patcher.LegacyExtensions.addExtraPlugins(LegacyExtensions.java:477)
	at net.imagej.patcher.LegacyExtensions.injectHooks(LegacyExtensions.java:175)
	at net.imagej.patcher.LegacyInjector.inject(LegacyInjector.java:308)
	at net.imagej.patcher.LegacyInjector.injectHooks(LegacyInjector.java:109)
	at net.imagej.patcher.LegacyEnvironment.initialize(LegacyEnvironment.java:101)
	at net.imagej.patcher.LegacyEnvironment.applyPatches(LegacyEnvironment.java:495)
	at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:397)
	at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:376)
	at net.imagej.legacy.DefaultLegacyService.<clinit>(DefaultLegacyService.java:124)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at java.lang.Class.newInstance(Class.java:438)
	at org.scijava.service.ServiceHelper.createServiceRecursively(ServiceHelper.java:302)
	at org.scijava.service.ServiceHelper.createExactService(ServiceHelper.java:269)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:231)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:194)
	at org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:166)
	at org.scijava.Context.<init>(Context.java:265)
	at org.scijava.Context.<init>(Context.java:222)
	at org.scijava.Context.<init>(Context.java:161)
	at org.scijava.Context.<init>(Context.java:117)
	at org.scijava.Context.<init>(Context.java:105)
	at net.imagej.ImageJ.<init>(ImageJ.java:82)
	at net.imagej.Main.launch(Main.java:61)
	at net.imagej.Main.main(Main.java:73)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:258)
	at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:184)
	at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:76)
Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 18 at 168
	at javassist.CtClassType.getClassFile2(CtClassType.java:204)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:98)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:84)
	at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:711)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:688)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:157)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46)
	at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:330)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:391)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.Javac.compileStmnt(Javac.java:569)
	at javassist.expr.MethodCall.replace(MethodCall.java:235)
	at net.imagej.patcher.CodeHacker$7.edit(CodeHacker.java:686)
	at javassist.expr.ExprEditor.loopBody(ExprEditor.java:192)
	at javassist.expr.ExprEditor.doit(ExprEditor.java:91)
	at javassist.CtBehavior.instrument(CtBehavior.java:679)
	at net.imagej.patcher.CodeHacker$EagerExprEditor.instrument(CodeHacker.java:1279)
	at net.imagej.patcher.CodeHacker.replaceCallInMethod(CodeHacker.java:670)
	... 35 more
Caused by: java.io.IOException: invalid constant type: 18 at 168
	at javassist.bytecode.ConstPool.readOne(ConstPool.java:1044)
	at javassist.bytecode.ConstPool.read(ConstPool.java:984)
	at javassist.bytecode.ConstPool.<init>(ConstPool.java:125)
	at javassist.bytecode.ClassFile.read(ClassFile.java:770)
	at javassist.bytecode.ClassFile.<init>(ClassFile.java:114)
	at javassist.CtClassType.getClassFile2(CtClassType.java:191)
	... 55 more
java.lang.IllegalArgumentException: Cannot handle app name in ij.ImageJ's public <init>(java.applet.Applet applet, int mode)
	at net.imagej.patcher.CodeHacker.replaceAppNameInCall(CodeHacker.java:446)
	at net.imagej.patcher.LegacyExtensions.insertAppNameHooks(LegacyExtensions.java:406)
	at net.imagej.patcher.LegacyExtensions.injectHooks(LegacyExtensions.java:292)
	at net.imagej.patcher.LegacyInjector.inject(LegacyInjector.java:308)
	at net.imagej.patcher.LegacyInjector.injectHooks(LegacyInjector.java:109)
	at net.imagej.patcher.LegacyEnvironment.initialize(LegacyEnvironment.java:101)
	at net.imagej.patcher.LegacyEnvironment.applyPatches(LegacyEnvironment.java:495)
	at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:397)
	at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:376)
	at net.imagej.legacy.DefaultLegacyService.<clinit>(DefaultLegacyService.java:124)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at java.lang.Class.newInstance(Class.java:438)
	at org.scijava.service.ServiceHelper.createServiceRecursively(ServiceHelper.java:302)
	at org.scijava.service.ServiceHelper.createExactService(ServiceHelper.java:269)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:231)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:194)
	at org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:166)
	at org.scijava.Context.<init>(Context.java:265)
	at org.scijava.Context.<init>(Context.java:222)
	at org.scijava.Context.<init>(Context.java:161)
	at org.scijava.Context.<init>(Context.java:117)
	at org.scijava.Context.<init>(Context.java:105)
	at net.imagej.ImageJ.<init>(ImageJ.java:82)
	at net.imagej.Main.launch(Main.java:61)
	at net.imagej.Main.main(Main.java:73)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:258)
	at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:184)
	at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:76)
Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 18 at 1
	at javassist.CtClassType.getClassFile2(CtClassType.java:204)
	at javassist.CtClassType.subtypeOf(CtClassType.java:304)
	at javassist.CtClassType.subtypeOf(CtClassType.java:319)
	at javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:235)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:107)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:84)
	at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:711)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:688)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:157)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46)
	at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:330)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
	at javassist.compiler.Javac.compileStmnt(Javac.java:569)
	at javassist.expr.MethodCall.replace(MethodCall.java:235)
	at net.imagej.patcher.CodeHacker$4.edit(CodeHacker.java:427)
	at net.imagej.patcher.CodeHacker$4.edit(CodeHacker.java:441)
	at javassist.expr.ExprEditor.loopBody(ExprEditor.java:220)
	at javassist.expr.ExprEditor.doit(ExprEditor.java:91)
	at javassist.CtBehavior.instrument(CtBehavior.java:679)
	at net.imagej.patcher.CodeHacker$EagerExprEditor.instrument(CodeHacker.java:1279)
	at net.imagej.patcher.CodeHacker.replaceAppNameInCall(CodeHacker.java:402)
	... 34 more
Caused by: java.io.IOException: invalid constant type: 18 at 1
	at javassist.bytecode.ConstPool.readOne(ConstPool.java:1044)
	at javassist.bytecode.ConstPool.read(ConstPool.java:984)
	at javassist.bytecode.ConstPool.<init>(ConstPool.java:125)
	at javassist.bytecode.ClassFile.read(ClassFile.java:770)
	at javassist.bytecode.ClassFile.<init>(ClassFile.java:114)
	at javassist.CtClassType.getClassFile2(CtClassType.java:191)
	... 55 more
[ERROR] Cannot create plugin: class='org.scijava.plugins.scripting.javascript.JavaScriptScriptLanguage', name='JavaScript', priority=0.0, enabled=true, pluginType=ScriptLanguage
java.lang.NullPointerException
	at org.scijava.script.AdaptedScriptLanguage.<init>(AdaptedScriptLanguage.java:63)
	at org.scijava.script.AdaptedScriptLanguage.<init>(AdaptedScriptLanguage.java:73)
	at org.scijava.plugins.scripting.javascript.JavaScriptScriptLanguage.<init>(JavaScriptScriptLanguage.java:59)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at java.lang.Class.newInstance(Class.java:438)
	at org.scijava.plugin.PluginInfo.createInstance(PluginInfo.java:302)
	at org.scijava.plugin.DefaultPluginService.createInstance(DefaultPluginService.java:236)
	at org.scijava.plugin.DefaultPluginService.createInstances(DefaultPluginService.java:225)
	at org.scijava.plugin.DefaultPluginService.createInstancesOfType(DefaultPluginService.java:216)
	at org.scijava.plugin.AbstractSingletonService.initInstances(AbstractSingletonService.java:114)
	at org.scijava.plugin.AbstractSingletonService.getInstances(AbstractSingletonService.java:72)
	at org.scijava.script.DefaultScriptService.initScriptLanguageIndex(DefaultScriptService.java:342)
	at org.scijava.script.DefaultScriptService.scriptLanguageIndex(DefaultScriptService.java:307)
	at org.scijava.script.DefaultScriptService.getIndex(DefaultScriptService.java:117)
	at org.scijava.script.DefaultScriptService.canHandleFile(DefaultScriptService.java:233)
	at org.scijava.script.ScriptFinder.discoverScripts(ScriptFinder.java:131)
	at org.scijava.script.ScriptFinder.discoverScripts(ScriptFinder.java:125)
	at org.scijava.script.ScriptFinder.findScripts(ScriptFinder.java:93)
	at org.scijava.script.DefaultScriptService.initScripts(DefaultScriptService.java:391)
	at org.scijava.script.DefaultScriptService.scripts(DefaultScriptService.java:325)
	at org.scijava.script.DefaultScriptService.getScripts(DefaultScriptService.java:167)
	at net.imagej.legacy.DefaultLegacyService.getScriptsAndNonLegacyCommands(DefaultLegacyService.java:643)
	at net.imagej.legacy.IJ1Helper.addMenuItems(IJ1Helper.java:560)
	at net.imagej.legacy.DefaultLegacyService.initialize(DefaultLegacyService.java:454)
	at org.scijava.service.ServiceHelper.createServiceRecursively(ServiceHelper.java:353)
	at org.scijava.service.ServiceHelper.createExactService(ServiceHelper.java:269)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:231)
	at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:194)
	at org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:166)
	at org.scijava.Context.<init>(Context.java:265)
	at org.scijava.Context.<init>(Context.java:222)
	at org.scijava.Context.<init>(Context.java:161)
	at org.scijava.Context.<init>(Context.java:117)
	at org.scijava.Context.<init>(Context.java:105)
	at net.imagej.ImageJ.<init>(ImageJ.java:82)
	at net.imagej.Main.launch(Main.java:61)
	at net.imagej.Main.main(Main.java:73)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:258)
	at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:184)
	at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:76)
[INFO] Overriding Upload Sample Image; identifier: command:net.imagej.plugins.commands.upload.SampleImageUploader; jar: file:/Users/miura/Desktop/fiji-nojre/Fiji.app/jars/imagej-plugins-commands-0.4.1.jar

Information about your version of Java:

  os.arch => x86_64
  os.name => Mac OS X
  os.version => 10.8.5
  java.version => 1.8.0_31
  java.vendor => Oracle Corporation
  java.runtime.name => Java(TM) SE Runtime Environment
  java.runtime.version => 1.8.0_31-b13
  java.vm.name => Java HotSpot(TM) 64-Bit Server VM
  java.vm.version => 25.31-b07
  java.vm.vendor => Oracle Corporation
  java.vm.info => mixed mode
  java.awt.graphicsenv => sun.awt.CGraphicsEnvironment
  java.specification.name => Java Platform API Specification
  java.specification.version => 1.8
  sun.cpu.endian => little
  sun.desktop => null
  file.separator => /

The up-to-date check says: REMIND_LATER

Information relevant to JAVA_HOME related problems:

  JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre
  imagej.dir => /Users/miura/Desktop/fiji-nojre/Fiji.app

Information about the version of each plugin:

Activated update sites:
ImageJ: http://update.imagej.net/ (last check:20150122044514)
Fiji: http://fiji.sc/update/ (last check:20150127132630)
Comment 2 Curtis Rueden 2015-02-26 14:07:39 CST
Just wanted to comment that we are currently pursuing some rather involved work to greatly improve the ImageJ launcher's support for selecting between various Java versions, etc. The plan is to fix this problem as part of that effort.
Comment 3 Curtis Rueden 2015-06-18 13:06:26 CDT
ImageJ on OS X with Java 8 should be better now:

http://imagej.net/2015-06-17_-_Better_behavior_on_OS_X

Please reopen this issue if the problem persists!