使用 ij 和 loci 类使 ImageJ/Fiji Jython 脚本在 bash 脚本中工作

Posted

技术标签:

【中文标题】使用 ij 和 loci 类使 ImageJ/Fiji Jython 脚本在 bash 脚本中工作【英文标题】:Make ImageJ/ Fiji Jython script with ij and loci classes work from bash script 【发布时间】:2021-07-28 17:09:08 【问题描述】:

到目前为止,我在斐济的脚本编辑器中执行了我的 jython 插件。 我想在命令行中执行我的 jython 脚本。

在该行执行jython myscript.py

from ij import IJ

我得到错误:

ImportError: 没有名为 ij 的模块

我猜这意味着找不到ij的jar文件,因为它通常是由ImageJ编辑器找到的。

所以我设置了java类路径:

java -cp “/home/user/input_bash/jars/ij.jar” ij

然后我得到错误:

找不到主类。 (费勒:Hauptklasse ij konnte nicht gefunden 奥德格拉登维尔登) 原因:java.lang.ClassNotFoundException: ij

我是 java 新手,这是否意味着我没有使用正确的 jar?

我也用编辑器来执行:

from ij import IJ;

print(IJ.getClassLoader().loadClass("ij.IJ")
    .getResource("IJ.class").toString());

这给了我目录:/home/user/Software/Fiji.app/jars/ij-1.53c.jar!/ij/IJ.class

这意味着编辑器使用了 ij-1.53​​c.jar 中的类! 然后我尝试了: java -cp "/home/lisa/Software/Fiji.app/jars/ij-1.53c.jar\!/ij" ij

由于! 而增加了\

我仍然得到相同的classNotFoundException

【问题讨论】:

【参考方案1】:

当我在命令行运行 jython 脚本时,我会像这样使用 jython.jar:

java -jar jython.jar somescript.py

如果您在 jython 模块或 jar 中有外部依赖项,您可以将它们添加到类路径中以便它们被拾取。您可能还需要将 jython 模块的路径添加到 sys.path:

import sys
sys.path.append("<path to modules>")

【讨论】:

以上是关于使用 ij 和 loci 类使 ImageJ/Fiji Jython 脚本在 bash 脚本中工作的主要内容,如果未能解决你的问题,请参考以下文章

eQTL | Expression quantitative trait loci | 表达数量性状基因座 | QTL | 数量性状位点

使用类型类使OpenGL的int常量类型安全

如何在R中自动设置和添加函数?

C++ 单例模板类使我的程序崩溃

类使基于REST的调用更容易

如何使用ij编写Servlet的生命周期?