2015-07-10 18 views
1

我目前使用的Sikuli需要设置PATHSIKULI_PATH环境变量才能执行。在运行配置中应用它非常简单,并且允许我在Eclipse中按预期运行脚本。使用Eclipse中指定的环境变量导出可运行jar

导出可运行JAR与除了UnsatisfiedLinkError之外的所有内容都正常工作,这是我在没有上述变量集时收到的异常。

是否有下面的设置导出到运行的JAR?: enter image description here

的想法是实质上产生一个独立的可执行的JAR文件执行的Sikuli脚本的便捷方式。

我试图手动设置PATHSIKULI_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) 

回答

0

添加环境变量是不够的。我必须以管理员身份登录,并建立了系统变量,并附加PATH的Sikuli libs路径,并创建了SikuliX基本路径SIKULI_HOME路径。

之后,我读到它不建议保持在Program Files(x86)范围内的Sikuli文件,而是将它们移动到C:\Users\my_user\SikuliX


此外,Sikuli-Java.jar不给项目工作区中保持(与内部参考),而是外面的项目(实际上SikuliX路径),并应始终保持在那里。

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

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


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

2

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

set PATH=%PATH%;... 
set SIKULI_HOME=... 
%JAVA_HOME%\bin\java yourrunnable.jar 
+0

我正在考虑这样做,但它会覆盖我目前在我的机器上设置的'PATH'变量。将'PATH'设置为'C:\ Program Files(x86)\ Sikuli X \ libs',然后不允许我实际运行'java -jar',除非我丢失了明显的东西。 – Juxhin

+0

你可以添加东西到当前的PATH而不会丢失现有的值,我已经编辑了我的答案。 –

+0

只是在周围扫视,看到了。这种方式好多了。我会先测试它并让你知道。 – Juxhin

相关问题