使用LuaJava在OSX 10.5上出现链接器错误

我在我的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)

我正在运行带有Lua 5.1.4的OSX 10.5.8 我还将我的OSX默认VM更改为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。

原文链接 https://stackoverflow.com/questions/2024702

点赞
stackoverflow用户183172
stackoverflow用户183172

这可能是一个线索,来自于 jnlua on luaforge 的第 7 节 "Building the Native Library":

请注意,目前使用 LuaBinaries 在 macos64 平台上构建不受支持。这是因为 Mac OS 上的 Java 6 仅支持 64 位,并且 LuaBinaries 仅为该平台提供了 32 位库。

我找不到其他关于这个问题的直接参考,但考虑到你描述的症状,这似乎是一个合理的解释。LuaJava 使用 LuaBinaries。

2010-01-13 22:24:37
stackoverflow用户296509
stackoverflow用户296509

问题是苹果在Leopard版本中仅发布了Java 6的64位版本,这意味着所有.jnilib文件(及其相关依赖项)需要包含64位。Leopard上的Java 5具有32位和64位版本。更令人困惑的是,Snow Leopard 具有Java 6的 32位和64位版本。

因此,总结一下:

  • Leopard:

    • Java 5:32位和64位
    • Java 6:64位
  • Snow Leopard:

    • Java 6:32位和64位
2010-04-15 03:18:17
stackoverflow用户325514
stackoverflow用户325514

我早上按照 Joe Huges 的旧指南 [http://retrovirus.com/incr/2005/08/building-luajava/](需要一些微小的修改)成功运行了它。我正在一个 2007 年(32 位)MBP 上使用 10.6。

你描述的问题可以通过将 libluajava-1.1.jnilib Java 库移到 /Library/Java/Extensions/ 文件夹中来解决。-cp“luajava-1.1.jar”标志将 jar 文件添加到你的路径中,但库仍需要被添加。

2010-04-25 18:58:47
stackoverflow用户236136
stackoverflow用户236136

你需要将 luajava.jnilib 文件放入 /System/Library/Frameworks/JavaVM.framework/Library 目录中。

2012-03-08 20:43:08