因此,我創建了一個Java項目,並且希望在JAR中包含一組庫。將庫中的庫動態添加到您的類路徑中
我的項目是建立像這樣:
庫/(瓶)
Main.java
我不知道如何將罐子到我Main.java文件,而無需添加類當我編譯它的路徑:
java -cp libs/*;. Main.java
這是否無論如何動態地做到這一點?我的Main.java在一個jar中擴展了一個類,所以我無法加載Main類中的類。
因此,我創建了一個Java項目,並且希望在JAR中包含一組庫。將庫中的庫動態添加到您的類路徑中
我的項目是建立像這樣:
庫/(瓶)
Main.java
我不知道如何將罐子到我Main.java文件,而無需添加類當我編譯它的路徑:
java -cp libs/*;. Main.java
這是否無論如何動態地做到這一點?我的Main.java在一個jar中擴展了一個類,所以我無法加載Main類中的類。
在編譯時設置jar
文件類路徑;和Adding Classes to the JAR File's Classpath解釋(部分)
您指定類在applet或應用程序的清單文件中的
Class-Path
頭字段包含。該Class-Path
頭採用以下形式:Class-Path: jar1-name jar2-name directory-name/jar3-name
所以(從鏈接的Oracle教程再次)創建一個文本文件爲您Manifest.txt
與Class-Path
標題,然後
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
對我而言,我喜歡在windows中創建如下所示的批處理文件:
@echo off
REM set any custom classpath
SET classpath=.\;.\properties
REM load all libraries in specific directory
SET libpath=.\lib
FOR %%i IN (%libpath%\*.jar) DO call set classpath=%%classpath%%;%%i
java -cp %classpath% org.test.MyTest
或者基於unix的操作系統中的bash腳本
#set any custom classpath
classpath=./:./properties
#load all libraries in specified directory
for i in ./lib/*.jar
do
classpath=$classpath:$i
done
export classpath
java -cp $classpath org.test.MyTest