2016-06-23 17 views
1

Eclipse Java Marsで大規模なプログラムを作成しました。私は実行可能なJarファイルとしてプログラムをエクスポートし、それを実行しても問題はありませんでした。プロジェクト全体を別のコンピュータにエクスポートしても、プログラムは引き続き動作します。プログラムの1つのインスタンスで「JNIエラーが発生しました」

プロジェクトにマイナーな変更を加えたときに、別のコンピュータで問題が発生しました。これらの変更はコンテンツベースの変更のみであり、プログラムの機能に違いはありません。 eclipseからプログラムを実行しても問題はないようです。私は、新しく作成されたジャー・ファイルを実行したい場合はしかし、私は次のエラーを取得する:フレームが続く

Error: A JNI error has occurred, please check your installation and try again. 

は言って:

A Java Exception has occurred. 

をだから私の質問は次のとおりです。

同じプログラムの別のインスタンスをJarファイルで実行できない可能性がありますが、古いインスタンスは実行できますか?

両方のコンピュータで同じJDKバージョン(1.8.0_73)を使用し、ほぼ同じ方法でそれらをインストールしました。まずJavaをNetBeansとともに複合リリースでインストールしました。次に、Eclipseをインストールしました。唯一の違いは、新しいコンピュータでEclipseをオフラインでインストールした、つまりEclipseインストーラなしでインストールしたことです。

答えて

4

Eclipseには、プロジェクトのJARをエクスポートするさまざまな方法があります。エクスポートされたJARを実行するときにネイティブライブラリ(またはライブラリ)を使用できるようにするには、"生成されたJARでパッケージに必要なライブラリ"オプションを選択します。

4

JNIは、アプリケーションがネイティブライブラリを読み込もうとしているJava Native Interfaceを意味します。これらのネイティブライブラリは、コンパイルされたjarファイルの一部ではありません。アプリケーションに必要なネイティブライブラリを見つけて、それが他のマシンにインストールされているかどうか調べてください。また、実行コンフィギュレーションを確認してください。 JNIを使​​用して、-Djava.libary.path = < ...>パラメータをネイティブライブラリを指すように設定する必要があります。

+0

こんにちは、ご返信ありがとうございます。古いJARファイルがなぜ機能するのか説明していますか?それらにネイティブライブラリが含まれていますか? –

+0

フォローアップの質問:私が使っているネイティブライブラリを見つけるにはどうしたらいいですか?私はすべてのJDKとJREをチェックし、まったく同じパスを持っていることを確認しましたが、これは役に立たないようです。 –

+3

おそらく、 "エクスポート"は古いコンピュータでよりよく構成されていた –

-6
<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>1.4</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <transformers> 
          <transformer 
           implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>com.datacollector.app.DataCollectorServiceRunner</mainClass> 
          </transformer> 
          <transformer 
           implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.handlers</resource> 
          </transformer> 
          <transformer 
           implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.schemas</resource> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+3

これはどのようにして質問に答えますか? –

関連する問題