Где SWT записывает dll файлы на windows? - PullRequest
4 голосов
/ 16 ноября 2011

Не могу найти в интернете, где SWT пытается записать файлы dll. У меня есть компьютер, на котором jar не запускается только потому, что SWT не может записывать библиотеки DLL.

ОБНОВЛЕНИЕ 1

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 com.sun.javaws.Launcher.executeApplication(Unknown Source)
                at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
                at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
                at com.sun.javaws.Launcher.run(Unknown Source)
                at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
                no swt-win32-3738 in java.library.path
                no swt-win32 in java.library.path
                Can't load library: \\ubz01fst\Students\User2010\Com\xxx\swt-win32-3738.dll
                Can't load library: \\ubz01fst\Students\User2010\Com\xxx\swt-win32.dll

                at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
                at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
                at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
                at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
                at install.Main.main(Main.java:162)

Ответы [ 2 ]

6 голосов
/ 17 ноября 2011

Я узнаю ответ сам. Начиная с SWT 3.3 вам больше не нужно включать нативную (DLL) библиотеку, потому что они находятся в самом jar-файле и распаковываются, как только вызывается SWT-библиотека. Файлы DLL распаковываются из фляги и помещаются в папку «.swt» в вашем «System.getProperty (« user.home »)». В моем случае проблема заключалась в том, что System.getProperty ("user.home") установлен в "\ ubz01fst \ Students \ User2010 \ Com \ xxx", который является путем UNC и который не доступен для записи (это часто случается в компаниях или организациях компьютеры).

Я не знаю, по какой причине System.getProperty ("user.home") в компьютерах берется из переменной среды "HOMESHARE" Windows

Решение состоит в замене System.getProperty ("user.home") на доступный для записи путь, например:

System.setProperty("user.home", System.getenv("USERPROFILE"));

перед вызовом любого кода SWT.

0 голосов
/ 14 января 2013

Хорошо, я нашел решение.Проблема была о поколении dll.Я использовал версию 3.7m5, я ​​скачал предыдущую версию (3.7) и приложение работало правильно.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...