В настоящее время я использую Sikuli, который запрашивает как переменную окружения , так и SIKULI_PATH
для установки. Применение этого в конфигурации запуска довольно прямолинейно и позволяет запускать сценарий по назначению из Eclipse.Экспорт runnable jar с переменными окружения, указанными в Eclipse
Экспорт исполняемого JAR хорошо работает со всем, кроме UnsatisfiedLinkError
, который был тем же самым исключением, которого я получил бы, когда у меня не было вышеупомянутых переменных.
Есть удобный способ экспортировать настройки ниже в работоспособный JAR ?:
Идея заключается в том, чтобы по существу сформировать автономный исполняемый файл JAR, который выполняет сценарий Sikuli.
Я попытался вручную установить 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)
Я думал об этом, но это переписало бы переменные 'PATH', которые я сейчас установил на своей машине. Установка 'PATH' на' C: \ Program Files (x86) \ Sikuli X \ libs', а затем не позволяет мне запускать 'java -jar', если я не упустил что-то явно очевидное. – Juxhin
Вы можете добавить вещи в текущую PATH, не потеряв существующее значение, я отредактировал свой ответ. –
Я просто разглядывал и видел это. Гораздо лучше. Сначала я проверю это и дам вам знать. – Juxhin