2011-01-17 4 views
2

私はGJCを使用してはいけない理由を知らないでください。私はそれを理解しています。GJC - 外部のびん

質問は、コンパイルされたライブラリを通常のjarを使用している場合と同じようにリンクできますか?

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

しかし、私はこのようなネイティブコードに瓶を回している:それはできないが吹く

java -cp lib/jarfiles.so:classes Main 

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

そして、それを実行しようとする.soファイルを呼び出します期待されるクラスを見つける。

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

これは働いていた場合、私は感銘を受け/非常に驚くだろう。共有ライブラリは通常、java.library.pathまたはLD_LIBRARY_PATHに追加されますが、gjcでどのように使用するのかはわかりません。 –

答えて

1

私はそれがあるべきだと思います。/ usr/libにまたは類似で

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

2 - プットjarfiles.so(ところで:ディレクトリがLD_LIBRARY_PATHに記載されている必要があり)

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

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

関連する問題