簡體   English   中英

使用Eclipse中指定的環境變量導出可運行的jar

[英]Exporting a runnable jar with environment variables specified in Eclipse

我當前正在使用Sikuli ,它需要同時設置PATHSIKULI_PATH環境變量才能執行。 將其應用到運行配置中非常簡單,這使我可以在Eclipse中按預期運行腳本。

導出可運行的JAR可以正常工作,除了拋出UnsatisfiedLinkError之外,這與我沒有設置上述變量時會收到的異常相同。

是否有方便的方法將以下設置導出到可運行的JAR? 在此處輸入圖片說明

這個想法實際上是生成執行Sikuli腳本的獨立可執行JAR。

我試圖手動設置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)

我認為沒有開箱即用的方式,因為這是特定於操作系統的。 如果您使用的是Windows,則只需創建包含以下行的批處理文件

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

添加環境變量還不夠。 我必須以管理員身份登錄並設置系統變量,並在PATH附加Sikuli libs路徑,並創建一個SIKULI_HOME基本路徑的SikuliX路徑。

之后,我讀到不建議在Program Files(x86)維護Sikuli文件,而是將它們移到C:\\Users\\my_user\\SikuliX


另外, Sikuli-Java.jar不應保存在項目工作空間內(並在內部引用),而應保存在項目外部(實際上是SikuliX路徑),並且應始終保存在該位置。

如果您修改了有關SikuliX的任何文件夾,請確保刪除冗余副本,以避免將來的更新可能發生沖突。

這些信息中有些可能是多余的,例如從“ Program Files到“ User文件夾的移動,但是這對我來說解決了這個問題。


注意-如果對系統變量進行了任何修改,請確保至少注銷並重新登錄,以使它們生效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM