2016-11-29 8 views
0

私はそのlibフォルダ内のバイナリファイルの束と、この[マルチモジュールのMaven]プロジェクトを持って、私はLD_LIBRARY_PATHを設定することで、Mavenのを介して負荷Java:LD_LIBRARY_PATHはクラスパスにアクセスできますか?

enter image description here

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <!--<forkMode>true</forkMode>--> 
       <useSystemClassLoader>true</useSystemClassLoader> 
       <environmentVariables> 
        <LD_LIBRARY_PATH>${basedir}/lib/</LD_LIBRARY_PATH> 
        <DYLD_LIBRARY_PATH>${basedir}/lib/</DYLD_LIBRARY_PATH> 
       </environmentVariables> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

私が欲しいですこれらのバイナリファイルを取り除いて(それらのファイルをリポジトリでチェックするのではなく)、それらのバイナリファイルをjavaの依存関係として含めます。だから私は、これらのバイナリファイルを含むjarファイルを作成し、依存関係として追加しました:

enter image description here

ありませんが、私はこれらのファイルを指すようにLD_LIBRARY_PATHを設定するかどうかはわかりません。私はいくつかのバリエーションを試してみましたが、これらのバイナリファイルを見つけられなかったために、ライブラリのすべてが不満を寄せていました。

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <!--<forkMode>true</forkMode>--> 
       <useSystemClassLoader>true</useSystemClassLoader> 
       <environmentVariables> 
        <LD_LIBRARY_PATH>lib/</LD_LIBRARY_PATH> 
        <DYLD_LIBRARY_PATH>lib/</DYLD_LIBRARY_PATH> 
       </environmentVariables> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

どこが間違っていますか?

答えて

1

あなたはフォークディレクティブをコメントアウトしました。 JVMが実行されると、それを遡及的に再構成することはできません。

ロードパスの設定は動的ではないため、Mavenを起動するために起動されたJVMはLD_LIBRARY_PATHや他のディレクティブを取得しません。フォーク指令がなければ、新しいJVMは立ち上げられないので、それらの指令は事実上何もしません。

フォークがオンになっていると、起動された子JVMは指定されたとおりに構成されるため、予想される動作になります。

これらのアイテムが読み込まれると思ったので、残りの質問は誤った前提に基づいています。フォークの問題を「修正」し、再テストし、新しい環境の下で新しい問題を再記述する方が良いかもしれません。

関連する問題