2017-03-27 4 views
1

コマンドラインから(仮想マシン内で)フィジーを使用しています。 特に私は多くのフィジーマクロを呼び出すpythonスクリプトを持っています。 フィジーがロードされるたびに、約1分かかるので、プロセスのボトルネックとなり、かなり遅くなります。Fiji(ImageJ)が(Linux上で)読み込みに時間がかかり、長いエラーメッセージが表示される

これは正常なのでしょうか。おそらくフィジーはもっと素早く積み込むことができますか? フィジーは、呼び出されたときに長いエラーメッセージも出力します。私はそれが負荷にかかる長い時間に関連しているのだろうかと思います。

私は(例えば)それを呼び出すために使用するコマンド

//shared_directory/projects/Fiji.app/ImageJ-linux64 --headless 
-macro //shared_directory/projects/retracted/fiji_scripts/patch_cropper.txt 

java.awt.HeadlessException 
     at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204) 
     at java.awt.Window.<init>(Window.java:536) 
     at java.awt.Frame.<init>(Frame.java:420) 
     at ij.plugin.frame.PlugInFrame.<init>(PlugInFrame.java:13) 
     at ij.plugin.frame.RoiManager.<init>(RoiManager.java:94) 
     at ij.macro.Interpreter.getBatchModeRoiManager(Interpreter.java:1875) 
     at ij.plugin.frame.RoiManager.getInstance(RoiManager.java:1795) 
     at ij.ImagePlus.deleteRoi(ImagePlus.java:1735) 
     at ij.ImagePlus.close(ImagePlus.java:391) 
     at ij.plugin.Commands.closeImage(Commands.java:136) 
     at ij.plugin.Commands.close(Commands.java:83) 
     at ij.plugin.Commands.run(Commands.java:29) 
     at ij.IJ.runPlugIn(IJ.java:187) 
     at ij.Executer.runCommand(Executer.java:137) 
     at ij.Executer.run(Executer.java:66) 
     at ij.IJ.run(IJ.java:297) 
     at ij.IJ.run(IJ.java:272) 
     at ij.macro.Functions.doRun(Functions.java:603) 
     at ij.macro.Functions.doFunction(Functions.java:96) 
     at ij.macro.Interpreter.doStatement(Interpreter.java:230) 
     at ij.macro.Interpreter.doStatements(Interpreter.java:218) 
     at ij.macro.Interpreter.run(Interpreter.java:115) 
     at ij.macro.Interpreter.run(Interpreter.java:85) 
     at ij.macro.Interpreter.run(Interpreter.java:96) 
     at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:155) 
     at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:139) 
     at ij.IJ.runMacroFile(IJ.java:148) 
     at net.imagej.legacy.IJ1Helper$4.call(IJ1Helper.java:1056) 
     at net.imagej.legacy.IJ1Helper$4.call(IJ1Helper.java:1052) 
     at net.imagej.legacy.IJ1Helper.runMacroFriendly(IJ1Helper.java:986) 
     at net.imagej.legacy.IJ1Helper.runMacroFile(IJ1Helper.java:1052) 
     at net.imagej.legacy.LegacyCommandline$Macro.handle(LegacyCommandline.java:188) 
     at org.scijava.console.DefaultConsoleService.processArgs(DefaultConsoleService.java:102) 
     at net.imagej.legacy.LegacyConsoleService.processArgs(LegacyConsoleService.java:81) 
     at org.scijava.AbstractGateway.launch(AbstractGateway.java:95) 
     at net.imagej.Main.launch(Main.java:62) 
     at net.imagej.Main.main(Main.java:68) 
     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:497) 
     at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:279) 
     at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:186) 
     at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:77) 

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 app name in ij.gui.YesNoCancelDialog's public <init>(java.awt.Frame parent, java.lang.String title, java.lang.String msg) 
     at net.imagej.patcher.CodeHacker.replaceAppNameInCall(CodeHacker.java:446) 
     at net.imagej.patcher.LegacyExtensions.insertAppNameHooks(LegacyExtensions.java:419) 
     at net.imagej.patcher.LegacyExtensions.injectHooks(LegacyExtensions.java:291) 
     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.LegacyService.<clinit>(LegacyService.java:134) 
     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:422) 
     at java.lang.Class.newInstance(Class.java:442) 
     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.createServiceRecursively(ServiceHelper.java:340) 
     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:278) 
     at org.scijava.Context.<init>(Context.java:234) 
     at org.scijava.Context.<init>(Context.java:174) 
     at org.scijava.Context.<init>(Context.java:160) 
     at net.imagej.ImageJ.<init>(ImageJ.java:77) 
     at net.imagej.Main.launch(Main.java:61) 
     at net.imagej.Main.main(Main.java:68) 
     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:497) 
     at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:279) 
     at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:186) 
     at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:77) 
Caused by: javassist.CannotCompileException: No code replaced! 
     at net.imagej.patcher.CodeHacker$EagerExprEditor.instrument(CodeHacker.java:1280) 
     at net.imagej.patcher.CodeHacker.replaceAppNameInCall(CodeHacker.java:443) 
     ... 36 more 

感謝をエラーメッセージは次のとおりです!

答えて

2

これは正常なのでしょうか。おそらくフィジーはもっと素早く積み込むことができますか?

これは動作を意図したものではありません。この問題はImageJ/Fijiに固有の問題であるため、ImageJ forumでこの点を上げてください。

java.lang.IllegalArgumentException: Cannot handle app name in ij.gui.YesNoCancelDialog's public <init>(java.awt.Frame parent, java.lang.String title, java.lang.String msg)

これは、ij1-patcherに(ヘッドレス物事を実行することを目標と干渉する)は、Java AWTのフレームワークにそれを独立させるためにij.gui.YesNoCancelDialogを処理していない可能性があります。

あなたはそれがthese linesを参照してください、それが現在GenericDialogと同じように、同様の方法でYesNoCancelDialogに対処するためにij1-patcher projectにパッチを提出することを歓迎しています。

YesNoCancelDialogを使用しないマクロを使用する、つまりgetBoolean() macro functionを実行しないでください。

EDIT:ImageJ forum topicにも記載されているように、パッチはhereと提出されました。

これは、マージしてリリースされるまでは、あなたがヘルプ>アップデートのImageJを使ってij.jarダウングレードによる問題を回避することができます...

+0

感謝。 私はあなたの回避策を理解していないのではないかと心配しています。 私はマクロを書きました。私の知る限りでは、私は 'YesNoCancelDialog'を使っていませんでした。 確かに、私はこのマクロを呼び出すことなくエラーを受け取る: '' //shared_directory/projects/Fiji.app/ImageJ-linux64-headless -macro' – user2182857

+1

[ImageJフォーラムで同じ質問をした](http: //forum.imagej.net/t/fiji-imagej-takes-to-long-to-load-on-linux-together-with-a-lengthy-error-message/4628?u=imagejan)今、続けましょうそこの議論。 –

関連する問題