Ошибки компоновщика при использовании LuaJava в OSX 10.5
У меня куча проблем, чтобы эта библиотека работала на моей установке OSX. В частности, я хотел бы использовать его с виртуальной машиной Java 1.6, но после компиляции получаю следующее:
java -cp "luajava-1.1.jar" org.keplerproject.luajava.Console
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/daniel/src/luajava- 1.1/libluajava-1.1.jnilib:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1822)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1739)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at org.keplerproject.luajava.LuaState.<clinit>(LuaState.java:92)
at org.keplerproject.luajava.LuaStateFactory.newLuaState(LuaStateFactory.java:59)
at org.keplerproject.luajava.Console.main(Console.java:49)
Я использую OSX 10.5.8 с Lua 5.1.4. Я также изменил свою виртуальную машину OSX по умолчанию на 1.6.0 следующим образом:
/System/Library/Frameworks/JavaVM.framework/Home -> Versions/1.6.0/Home/
/System/Library/Frameworks/JavaVM.framework/Versions/Current -> 1.6.0/
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK -> 1.6.0/
Что я делаю неправильно? Я замечаю, когда я использую Java 1.5, все отлично работает. За исключением того, что я не хочу 1,5, я хочу 1,6.
4 ответа
Проблема в том, что Apple выпустила только 64-битную версию Java 6 на Leopard, что означает, что все файлы.jnilib (и связанные с ними зависимости) должны быть / содержать 64-битные. Java 5 на Leopard имеет 32- и 64-разрядные версии. Еще более запутанным является тот факт, что Snow Leopard имеет 32- и 64-разрядные версии Java 6.
Итак, подведем итог:
- Leopard:
- Java 5: 32 и 64
- Ява 6: 64
- Снежный барс:
- Java 6: 32 и 64
Вам нужно поместить файл luajava.jnilib в ваш каталог /System/Library/Frameworks/JavaVM.framework/Library.
Это может быть подсказка, из jnlua на luaforge, Раздел 7. Сборка родной библиотеки:
Обратите внимание, что сборка для платформы macos64 с LuaBinaries в настоящее время не поддерживается. Это связано с тем, что Java 6 в Mac OS является только 64-разрядной, а LuaBinaries предоставляют только 32-разрядные библиотеки для этой платформы.
Я не мог найти никакой другой прямой ссылки на это, но это кажется правдоподобным объяснением, учитывая симптомы, которые вы описываете. LuaJava использует LuaBinaries.
Я только что заставил его работать этим утром, следуя этим старым указаниям Джо Хьюджеса: http://retrovirus.com/incr/2005/08/building-luajava/ (некоторые небольшие изменения были необходимы). Я использую 10,6 на 2007 год (32-битный) MBP.
Проблема, которую вы описали, была решена путем перемещения библиотеки Java libluajava-1.1.jnilib в папку /Library/Java/Extensions/. Флаг -cp "luajava-1.1.jar" добавляет файл jar к вашему пути, но библиотеку все еще нужно добавить.