2015-07-10 5 views
1

В настоящее время я использую Sikuli, который запрашивает как переменную окружения , так и SIKULI_PATH для установки. Применение этого в конфигурации запуска довольно прямолинейно и позволяет запускать сценарий по назначению из Eclipse.Экспорт runnable jar с переменными окружения, указанными в Eclipse

Экспорт исполняемого JAR хорошо работает со всем, кроме UnsatisfiedLinkError, который был тем же самым исключением, которого я получил бы, когда у меня не было вышеупомянутых переменных.

Есть удобный способ экспортировать настройки ниже в работоспособный JAR ?: enter image description here

Идея заключается в том, чтобы по существу сформировать автономный исполняемый файл 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) 

ответ

0

Добавление переменной окружения было недостаточным. Мне пришлось войти в систему как администратор и настроить системные переменные и добавить путь Sikuli libs в PATH и создать путь SIKULI_HOME с базовым путем для SikuliX.

После этого я прочитал, что не рекомендуется хранить файлы Sikuli в пределах Program Files(x86) и вместо этого переместить их на C:\Users\my_user\SikuliX.


Кроме того, Sikuli-Java.jar не будет находиться в пределах рабочей области проекта (и ссылок внутри), а за пределами проекта (на самом деле SikuliX пути) и всегда должен быть там.

Если вы изменяете любые папки, относящиеся к SikuliX, обязательно удалите избыточные копии, чтобы избежать возможных проблем с будущими обновлениями.

Некоторые из этих данных могут быть избыточными, например, перемещение от Program Files до User, однако это решило проблему для меня.


Примечание: если какие-либо изменения сделаны системные переменные, убедитесь, по крайней мере выхода из системы и снова войти в систему, чтобы они вступили в силу.

2

Я не думаю, что есть способ из коробки, так как это специфический для ОС. Если вы работаете в 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