2

请不要咆哮为什么我不应该使用 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)

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

4

1 回答 1

1

我认为应该是:

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

2- 将 jarfiles.so 放在 /usr/lib 或类似文件中(顺便说一句:目录必须在 LD_LIBRARY_PATH 中列出)

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

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

于 2011-01-17T14:03:41.417 回答