SWT реализован с использованием собственных библиотек пользовательского интерфейса - в данном случае библиотек Mac Carbon - и требует некоторого кода JNI для маршалинга вызовов SWT на собственные вызовы Carbon.Загрузка библиотек JNI немного отличается от обычной загрузки классов (динамические библиотеки должны сначала загружаться с System#loadLibrary
).
Во-первых, если вы работаете на 64-битной машине, убедитесь, что вы передаете-d32
аргумент для JRE.(т. е. java -d32 MyTestClass
).Библиотеки SWT Carbon являются только 32-разрядными и не будут загружаться в 64-разрядной среде выполнения.
По умолчанию SWT пытается загрузить динамические библиотеки .jnilib
из файла JAR в вашем пути к классам - библиотека libswt-carbon-3346.jnilib
должен быть в вашем org.eclipse.swt.carbon.macosx...
банке.SWT попытается распаковать этот jnilib
из вашего JAR-файла во временную папку и загрузить его.
Если он не может этого сделать по какой-либо причине (например, java.io.tmpdir
не доступен для записи), тогда этоне удастся.Чтобы обойти это, вы должны извлечь libswt-carbon-3346.jnilib
из org.eclipse.swt.carbon.macosx
JAR и следовать инструкциям, приведенным в исключении.(Например, установите swt.library.path
в местоположение этого jnilib.)
Не имеет отношения к вашему актуальному вопросу: вы используете SWT 3.3.С тех пор было сделано много изменений, включая (вероятно, предпочтительную) поддержку Какао.Обновление до новейших библиотек SWT в новейшем Eclipse может быть очень полезным.