GJC - 外部罐子

时间:2011-01-17 13:41:32

标签: java jar compilation gcj

请不要咆哮为什么我不应该使用GJC,我理解它的含义。

问题是,我可以像使用常规jar一样链接已编译的库吗?

// this works and links to the jarfiles.jar
java -cp lib/jarfiles.jar:classes Main

但是我将jar变成了这样的本机代码:

gcj -shared -fPIC -Wl,-Bsymbolic jarfiles.jar -o jarfiles.so

尝试运行它来调用.so文件:

java -cp lib/jarfiles.so:classes Main

它无法找到预期的课程。

Exception in thread "main" java.lang.NoClassDefFoundError: com/netxpect/FirstFromJar
        at Main.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.netxpect.FirstFromJar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

不应该这样吗?我究竟做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

我认为应该是:

1- gcj -shared -fjni jarfiles.jar -o libjarfiles-shared.so

2-把jarfiles.so放在/ usr / lib或类似的地方(btw:目录必须在LD_LIBRARY_PATH中列出)

3- gcj -fjni Somefile.java --main=Somefile -ljarfiles-shared

4- LD_LIBRARY_PATH=/usr/lib/jni ./a.out