OSX 10.5上使用LuaJava的链接器错误

OSX 10.5上使用LuaJava的链接器错误,java,macos,lua,luajava,Java,Macos,Lua,Luajava,我在让这个库在我的OSX安装中工作时遇到了很多问题。 特别是,我希望将其与Java 1.6 VM一起使用,但在编译之后,我得到以下结果: 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

我在让这个库在我的OSX安装中工作时遇到了很多问题。 特别是,我希望将其与Java 1.6 VM一起使用,但在编译之后,我得到以下结果:

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)
我做错了什么?我注意到当我使用Java1.5时,一切都很好。除了我不想要1.5,我想要1.6。

这可能是第7节的一个线索。构建本机库:

请注意,macos64的构建 带有LuaBinaries的平台目前正在运行 不支持。这是由于Java6 在Mac OS上,只有64位和 LuaBinaries仅提供32位 该平台的库


我找不到任何其他与此相关的直接参考,但考虑到您描述的症状,这似乎是一个合理的解释。LuaJava使用LuaBinaries。

问题在于苹果只在Leopard上发布了64位版本的Java 6,这意味着所有.jnilib文件(以及相关的依赖项)都需要/包含64位。Leopard上的Java5有32位和64位版本。更令人困惑的是,snowleopard同时拥有32位和64位版本的Java6

因此,总结一下:

  • 豹子:
    • Java 5:32和64
    • 爪哇6:64
  • 雪豹:
    • Java 6:32和64

今天早上,我按照乔·雨格斯(Joe Huges)的老指示,刚把它修好:(需要做一些细微的修改)。我在2007年份(32位)MBP上使用10.6


通过将libluajava-1.1.jnilib Java库移动到/library/Java/Extensions/文件夹,您描述的问题得到了解决。-cp“luajava-1.1.jar”标志将jar文件添加到您的路径中,但仍然需要添加库。

您需要将luajava.jnilib文件放在/System/library/Frameworks/JavaVM.framework/library目录中。

不确定这是否有帮助,但您的错误消息在路径名“luajava-1.1”中显示一个空格。这似乎是无意的。
/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/