Mavenを使用して、プロジェクトの実行可能なJARファイルをすべての依存関係(別々のフォルダにコピーされています)で生成しています。jarはWindows上で動作しますが、Ubuntuでは動作しません
http://pastebin.com/NfhiVZhM私は、JDK 1.8でWindows 10マシンでMVNパッケージを実行している
(リンクはこちらコピー巨大なXMLを避けるためのpom.xmlにします)。 mvnを実行した後、cmdを開いてjavaを実行すると、-jar instagramBot.jar
はすべて正常に動作します。
Mavenが結果(ターゲット)を生成するフォルダは、Dropboxによってoracle-jdk-1.8を持つUbuntuマシンと同期されます。
しかし、Ubuntuの上にシェル開いている場合と結果は同じコマンドを実行して行く:
[email protected]:~/svn/instagramBot/target$ java -jar instagramBot.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: com/tomatechines/instagramapi/services/exception/InstagramException
これは、JVMのスタックトレースとプログラムがクラッシュを印刷された後。
com/tomatechines/instagramapi/services/exception/InstagramException
を含むjarがクラスパスに存在し、Ubuntuマシンのライブラリフォルダにも存在することを既に確認しました。しかし、エラーは起こり続ける。
また、ジャーの名前に表示される可能性のある特殊文字はチェックしましたが、何も見つかりませんでした。
スタックトレースがエラーに任意のfutherの説明をしていません。
Error: A JNI error has occurred, please check your installation and try again
誰もがあるかもしれないか他に何私は、問題を識別するためにチェックする必要がありますどのような任意のアイデアを持っていますか?
============== UPDATE ============私が使用
すべてのライブラリはjarファイルです。 DLLやOS固有のファイルはありません。
Eclipseで実行可能なjarファイルを書き出し、すべてのライブラリを1つのjar(58MB)にパッケージングしようとしましたが、通常はUbuntu上で動作します...私はこのコードを使用しないので私が使用しているライブラリやライブラリはほとんど変更されていませんが、1つのjarファイルにすべてをパックすると、小さなバグを修正するたびに、jarファイルをエクスポートするためのEclipseプロセスはかなり便利ではないにもかかわらず、58MBを再同期する必要があります。
JNIはJava Native Interfaceです。これはJavaがネイティブライブラリCやC++のようなOSのために特別に書かれています)。実行しようとしているプログラムにネイティブライブラリが必要ですか?あなたは適切な場所にLinux用の適切なlibを持っていますか? (注:Windows DLLはLinuxでは動作しません.Linux固有のバージョンのライブラリが必要です)。 – Jesper
NO!私が使用するライブラリはすべてjarです。今では、Eclipseで実行可能なjarファイルをエクスポートしようとしましたが、すべてのライブラリを単一のjar(58MB)に梱包しています。 –
エラーが表示されたらインストールを確認します。それはjvm自体を参照している可能性があります – efekctive