1

我目前正在使用Sikuli,它需要设置一个PATHSIKULI_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)
4

2 回答 2

2

我认为没有开箱即用的方式,因为这是特定于操作系统的。如果您在 Windows 上,只需创建一个带有行的批处理文件

 set PATH=%PATH%;...
 set SIKULI_HOME=...
 %JAVA_HOME%\bin\java yourrunnable.jar
于 2015-07-10T15:12:46.147 回答
0

添加环境变量是不够的。我必须以管理员身份登录并设置系统变量并附加 Sikulilibs路径PATH并创建一个SIKULI_HOME带有基本路径的路径SikuliX

之后我读到不建议在其中维护 Sikuli 文件Program Files(x86),而是将它们移至C:\Users\my_user\SikuliX.


此外,Sikuli-Java.jar不应将其保留在项目工作空间内(并在内部引用),而是保留在项目之外(实际上是 SikuliX 路径),并且应始终保留在那里。

如果您修改任何有关 SikuliX 的文件夹,请务必删除多余的副本,以避免与未来更新可能发生的冲突问题。

其中一些信息可能是多余的,例如从文件夹Program FilesUser文件夹的移动,但这为我解决了这个问题。


注意——如果对系统变量进行了任何修改,请务必至少注销并重新登录,以便它们生效。

于 2015-07-10T19:32:54.683 回答