2015-07-10 36 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

相關問題