开发者

Linker errors using LuaJava on OSX 10.5

I'm having a bunch of problems getting this library to work on my OSX installation. In particular, I'd like to use it with a Java 1.6 VM but after I compile it up I get the following:

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)
   开发者_Python百科 at org.keplerproject.luajava.LuaStateFactory.newLuaState(LuaStateFactory.java:59)
    at org.keplerproject.luajava.Console.main(Console.java:49)

I'm running OSX 10.5.8 with Lua 5.1.4 I've also changed my OSX default VM to 1.6.0 as so:

/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/

What am I doing wrong? I notice when I use Java 1.5 everything works great. Except I don't want 1.5, I want 1.6.


This may be a clue, from jnlua on luaforge, Section 7. Building the Native Library:

Note that building for the macos64 platform with LuaBinaries is currently not supported. This is due to Java 6 on Mac OS being only 64-bit and LuaBinaries providing only 32-bit libraries for that platform.

I couldn't find any other direct reference to this, but it seems a plausible explanation, given the symptoms you describe. LuaJava uses LuaBinaries.


The problem is that Apple only released a 64 bit version of Java 6 on Leopard, which means that all .jnilib files (and associated dependencies) need to be/contain 64 bit. Java 5 on Leopard has both 32 and 64 bit versions. Even more confusing is the fact that Snow Leopard has both 32 and 64 bit versions of Java 6.

So, to summarize:

  • Leopard:
    • Java 5: 32 & 64
    • Java 6: 64
  • Snow Leopard:
    • Java 6: 32 & 64


I just got it to work this morning following these old directions by Joe Huges: http://retrovirus.com/incr/2005/08/building-luajava/ (Some slight modifications were necessary). I'm using 10.6 on a 2007-vintage (32 bit) MBP.

The problem you describe was solved by moving the libluajava-1.1.jnilib Java library to the /Library/Java/Extensions/ folder. The -cp "luajava-1.1.jar" flag adds the jar file to your path, but the library still needs to be added.


You need to put the luajava.jnilib file in your /System/Library/Frameworks/JavaVM.framework/Library directory.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜