请不要咆哮为什么我不应该使用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)
不应该这样吗?我究竟做错了什么?谢谢。
答案 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