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

问题描述

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

在该行执行 jython myscript.py

from ij import IJ

我收到错误

导入错误:没有名为 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 新手,这是否意味着我没有使用正确的 jars?

我也是用编辑器来执行的:

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

解决方法

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

java -jar jython.jar somescript.py

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...