Используйте ImageJ для запуска Python скрипта с параметрами - PullRequest
0 голосов
/ 07 января 2020

Этот вопрос является продолжением

Запуск сценария Jython из терминала с параметром

@ KarlderKaefer

В Вкратце, я хотел бы вызвать ImageJ из командной строки для выполнения сценариев Python, которые принимают параметры в качестве входных данных и анализируют с помощью getopt (). Как указано в приведенной выше ссылке, существует два способа написания сценария и вызова:

  1. Классический Python способ с sys.argv
> imagej --headless --console JythonScript.py param1

JythonScript.py:

import sys
program_name = sys.argv[0]
paramvalue1  = sys.argv[1]
Jython указывает c путь с # @String et c.
> imagej --ij2 --headless --console --run JythonScript_2.py 'param1=value'

JythonScript_2.py:

# @String param1

The Jython ( во-вторых) у меня получился способ, но когда я попробовал «классический» 1042 * (первый) способ, я получил:

Error while executing the main() method of class 'org.python.util.jython':
java.lang.UnsatisfiedLinkError: org.scijava.jython.shaded.org.fusesource.jansi.internal.CLibrary.init()V
        at org.scijava.jython.shaded.org.fusesource.jansi.internal.CLibrary.init(Native Method)
        at org.scijava.jython.shaded.org.fusesource.jansi.internal.CLibrary.<clinit>(CLibrary.java:43)
        at org.scijava.jython.shaded.org.fusesource.jansi.AnsiConsole.wrapOutputStream(AnsiConsole.java:48)
        at org.scijava.jython.shaded.org.fusesource.jansi.AnsiConsole.<clinit>(AnsiConsole.java:38)
        at org.python.jline.AnsiWindowsTerminal.detectAnsiSupport(AnsiWindowsTerminal.java:57)
        at org.python.jline.AnsiWindowsTerminal.<init>(AnsiWindowsTerminal.java:27)
        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:423)
        at java.lang.Class.newInstance(Class.java:442)
        at org.python.jline.TerminalFactory.getFlavor(TerminalFactory.java:211)
        at org.python.jline.TerminalFactory.create(TerminalFactory.java:102)
        at org.python.jline.TerminalFactory.get(TerminalFactory.java:186)
        at org.python.jline.TerminalFactory.get(TerminalFactory.java:192)
        at org.python.jline.console.ConsoleReader.<init>(ConsoleReader.java:243)
        at org.python.util.JLineConsole.install(JLineConsole.java:107)
        at org.python.core.Py.installConsole(Py.java:1744)
        at org.python.core.PySystemState.initConsole(PySystemState.java:1269)
        at org.python.core.PySystemState.doInitialize(PySystemState.java:1119)
        at org.python.core.PySystemState.initialize(PySystemState.java:1033)
        at org.python.core.PySystemState.initialize(PySystemState.java:989)
        at org.python.core.PySystemState.initialize(PySystemState.java:984)
        at org.python.util.jython.run(jython.java:263)
        at org.python.util.jython.main(jython.java:142)
        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:498)
        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, поэтому не мог понять, что происходит. Так кто-нибудь, пожалуйста, помогите мне? Спасибо!

Информация о системе Win10.0.17134 (Edu) x64 Фиджи ImageJ 2.0.0-r c -69 / 1.52p Java 1.8.0_172 (x64) Windows PowerShell 5.1.17134.858 работает в ConEmu 191012 превью

...