簡體   English   中英

從命令行運行時為類路徑提供相對於主類的路徑

[英]Providing path relative to main class for classpaths when running from command line

我正在嘗試從命令行執行我的程序attachmentUploader.jar的編譯版本。 這對各種Java庫有很多依賴關系,我計划將其與程序捆綁在一起並指定為類路徑的一部分。 該軟件包將在環境之間移動,並將使用該環境的Java運行時執行。 在我的環境中使用絕對路徑,該命令如下所示:

"C:\Program Files\Java\jdk1.6.0_37bin\java" -cp "C:/Users/My Documents/jars/attachmentLoader.jar";"C:\Dev Tools\jxl.jar";"C:\Dev Tools\org.apache.commons.codec";"C:\More Dev Tools\java-json.jar" com.custom.test.postClient

我想將所有類路徑jar路徑修改為相對於保存我的主類的位置,但是我讀到這種情況下的相對路徑將相對於Java的執行位置。 就我而言,它可能在任何地方,這取決於它的安裝位置。 有解決這個問題的簡單方法嗎?

謝謝大家

實際上有幾種方法:

  1. 使您的jar文件成為可執行的jar文件。 這是通過將清單文件添加到jar中來完成的, 該清單文件指定主類是什么,以及jar依賴項相對於主jar文件的位置位於何處。 執行該程序的命令將是java -jar path\\to\\jarfile.jar
  2. 使用包裝可執行文件或外殼程序腳本,該腳本使用腳本本身的位置來組成類路徑。 這樣的腳本將取決於系統(Unix / Windows),但是兩個平台都允許腳本文件知道它們自己的位置,因此可以將該位置用作jar文件位置的基礎。 該技術的優點是它還允許將系統屬性,內存選項等傳遞給JVM。

我建議您使用標准的構建工具(例如gradle) ,該工具具有一個應用程序插件 ,可為您在所有平台上生成所有這些腳本文件,並將整個應用程序捆綁為zip或tar.gz文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM