我目前正在使用 Sikuli它需要设置 PATH
和 SIKULI_PATH
环境变量才能执行。在运行配置中应用它相当简单,并且允许我在 Eclipse 中按预期运行脚本。
导出可运行的 JAR 可以很好地处理除抛出 UnsatisfiedLinkError
之外的所有情况,这与我没有设置上述变量时收到的异常相同。
是否有方便的方法将以下设置导出到可运行的 JAR 中?:
这个想法本质上是生成一个执行 Sikuli 脚本的独立可执行 JAR。
我尝试手动设置 PATH
和 SIKULI_HOME
,它们按预期工作(echo %PATH%
& echo %SIKULI_HOME%
都打印所需的路径)。但是我仍然收到相同的 UnsatisfiedLinkError
。以下是相关的 StackTrace:
C:\Users\XXXXX\Desktop>java -jar sikuli.jar -Dsikuli.Debug=3 -Djava.library.path = "C:\Program Files (x86)\Sikuli X\"
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\Sikuli X\libs\Win32Util.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at com.wapmx.nativeutils.jniloader.NativeLoader.loadLibrary(NativeLoader.java:44)
at org.sikuli.script.Win32Util.<clinit>(Win32Util.java:19)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.sikuli.script.Env.getOSUtil(Env.java:91)
at org.sikuli.script.ScreenHighlighter.init(ScreenHighlighter.java:180)
at org.sikuli.script.ScreenHighlighter.<init>(ScreenHighlighter.java:293)
at org.sikuli.script.Screen.initBounds(Screen.java:105)
at org.sikuli.script.Screen.<init>(Screen.java:117)
at org.sikuli.tests.TestSikuli.main(TestSikuli.java:13)
最佳答案
我认为没有开箱即用的方法,因为这是特定于操作系统的。如果您使用的是 Windows,只需创建一个包含沿
行的批处理文件 set PATH=%PATH%;...
set SIKULI_HOME=...
%JAVA_HOME%\bin\java yourrunnable.jar
关于java - 使用 Eclipse 中指定的环境变量导出可运行的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344120/