Невозможно загрузить библиотеку SWT & ldquo; UnsatisfiedLinkError: no swt-gtk-4233 & rdquo;

Я новичок в Java, который только что сделал простую Java-программу, используя SWT для GUI через Eclipse Juno. Код работал, и программа могла работать внутри затмения, поэтому я скомпилировал его и сделал его пригодным для запуска jar-файлом, чтобы его можно было запускать вне затмения. Я попытался запустить его с помощью терминала, и появилась эта ошибка.

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
no swt-gtk-4233 in java.library.path
no swt-gtk in java.library.path
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk-4233.so
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk.so

at org.eclipse.swt.internal.Library.loadLibrary(Library.java:331)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:240)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:133)
at Class1.main(Class1.java:12)

Так что теперь похоже, что он не может найти libswt-gtk-4233.so и другой файл. Однако, когда я взглянул на папку .swt, у меня было libswt-gtk-3740.so, а не 4233.

Таким образом, он пытается найти файл, который более актуален. Так что это значит, я должен обновить SWT? что происходит?

4
задан 13 October 2012 в 18:42

2 ответа

Вам нужно сделать символическую ссылку на файлы SWT, расположенные в каталоге /usr/lib/jni. Я нашел решение на этом сайте: Eclipse не может загружать библиотеки SWT .

используйте эту команду:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/
0
ответ дан 13 October 2012 в 18:42

Так что теперь похоже, что он не может найти libswt-gtk-4233.so и другой файл. Однако, когда я взглянул на папку .swt, у меня был libswt-gtk-3740.so, а не 4233.

В самом плагине есть эти библиотеки.

Щелкните правой кнопкой мыши в своем проекте:
-> Свойства -> Путь сборки
Однажды в окне Путь сборки Java, Проекты ' Вкладка s содержит org.eclipse.swt.% GUI%.% PLATFORM%
(проект, который вы импортировали)
Нажмите, чтобы развернуть.
Редактировать расположение родной библиотеки.
Выберите рабочее пространство, затем весь проект org.eclipse.swt.% GUI%.% PLATFOM%
Нажмите Ok, и все готово!

О:

.. поэтому я скомпилировал его и сделал его исполняемым файлом JAR, чтобы его можно было запускать вне затмения. Я попытался запустить его с помощью терминала, и появилась эта ошибка.


Я не знаю, как вы работали в Eclipse, а не в терминале. Итак, я думал, что вы хотели сделать это на другой платформе. Для тех, кто новичок (как я), пожалуйста, прочитайте вики: Standard Widget Toolkit

.. Программы, которые вызывают SWT, являются переносимыми, но реализация инструментария, несмотря на часть о том, что он написан на Java, уникален для каждой платформы ...

SWT должен быть портирован на каждую новую библиотеку GUI, которая нуждается в поддержке. В отличие от Swing и AWT, SWT доступен не на каждой поддерживаемой Java платформе, так как SWT не является частью выпуска Java ...

Поскольку реализация SWT отличается для каждой платформы, библиотека SWT для конкретной платформы (файл JAR) должна распространяться с каждым приложением.

Поэтому, если вы хотите экспортировать свой проект на определенную платформу, вам нужно открыть свою IDE на этой платформе, повторить импорт плагина, но на этот раз для этой платформы, удалите из -строить путь - проекты, не связанные (не удалять проекты). И теперь вы можете скомпилировать для этой конкретной платформы.

Если вы переходите с одной платформы на другую по мере разработки проекта, просто отредактируйте путь сборки, удалив там несвязанные проекты.

0
ответ дан 13 October 2012 в 18:42

Другие вопросы по тегам:

Похожие вопросы: