2

私が GJC を使うべきではない理由を暴言を吐かないでください。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-3-gcj -fjni Somefile.java --main=Somefile -ljarfiles-shared

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

于 2011-01-17T14:03:41.417 に答える