2016-11-29 97 views
0

我有這個[多模塊的Maven]項目,一堆二進制文件在其lib文件夾Java:LD_LIBRARY_PATH可以訪問類路徑嗎?

enter image description here

這是我基於Maven加載,通過設置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>${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將按照您指定的方式進行配置,因此它們將具有預期的行爲。

既然您認爲這些項目將被加載,您的問題的其餘部分是基於一個錯誤的前提。你可能會更好地解決分岔問題,重新測試,然後在新環境下重新描述(可能)新問題。