繁体   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