У меня есть старое приложение Java, которое было скомпилировано для 32-битной платформы. Я перешел с Windows XP (32-разрядная версия) на OS X Snow Leopard (64-разрядная версия), и я хотел бы продолжить использовать это приложение, однако получаю исключение по следующим направлениям:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/Applications/TheApp/lib/libswt-pi-carbon-3139.jnilib: no suitable image found.
Did find:
/Applications/TheApp/lib/libswt-pi-carbon-3139.jnilib: mach-o, but wrong
architecture
Я пытался использовать -d32
переключаться при запуске приложения из командной строки, но безуспешно.
Можно ли вообще запустить это 32-битное приложение на 64-битной платформе без перекомпиляции? или использовать виртуальную машину?
Редактировать:
У меня нет исходного кода для этого приложения, и я не слишком знаком с разработкой на Java. Если есть инструмент, который я могу использовать для «компиляции» (?) До 64 бит, это было бы полезно!
Java Preferences
в любом случае диалог показывает это, иjava -version
возвращается"Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)"
Ответы:
Java разработана, чтобы делать такие вещи прозрачно. Когда-нибудь слышал лозунг Скомпилировать один раз, запустить везде ? Ну, это уместно здесь: Компилировать один раз, везде отлаживать ,
Проблема, с которой вы сталкиваетесь, заключается в том, что графический интерфейс зависит от конкретного окна. исключение вы видите подтверждает это. В общем, все, что использует SWT или AWT, не будет работать правильно на другой платформе, если не будут приняты меры, чтобы убедиться в этом.
Короче говоря, вам не повезло. Вы могли бы, конечно, использовать JD извлечь исходный код и изменить код графического интерфейса для правильной работы в OSX. К сожалению, это потребует некоторого опыта работы с Java.
источник