我为ImageJ写了几个宏,我想创建一个.jar(.zip)文件,以简化分发和安装。我找不到运行位于jar文件中的宏的方法。我查看了ImageJ API,可能是因为我不熟悉Java,所以找不到答案。
jar文件包含:
-
plugin.config
Plugins>MyPluginFolder, "Function1", my_plugin("my_macro_1.txt")
-
my_macro_1.txt
print("Hello world");
-
my_plugin.java和相关的.class文件
import ij.*; import ij.process.*; import ij.gui.*; import java.awt.*; import ij.plugin.*; import ij.macro.*; public class my_plugin implements PlugIn { static boolean showArgs = true; public void run(String arg) { if (arg.equals("my_macro_1.txt")) {my_macro_function1(); return;} } public void my_macro_function1() { IJ.runMacro("my_macro_1.txt"); } }
我想我错过了什么。我们将衷心感谢您的帮助。
ImageJ社区已经对此进行了多次讨论。
分发宏、脚本和插件的最简单方法是使用自己的更新网站。在这种情况下,不需要将脚本打包到jar文件中,用户只需单击一下就可以一次性安装所有脚本。
如果您喜欢将脚本打包到一个jar文件中,请查看Script Launcher插件:它只提供脚本文件和一个plugins.config
文件,从而使您的步骤#3变得多余。
上面代码中的问题是ImageJ在jar文件中看不到资源文件my_macro.txt
。您需要使用ClassLoader#getResourceAsStream()
方法来执行此操作。查看在脚本启动器中是如何完成的。