2014-01-08 35 views
4

我需要創建一個批處理文件,在Windows啓動時運行我的java jar。 爲此,我需要知道我想要自動運行的jar名稱。 我假設用戶可以更改jar的名稱,所以在創建蝙蝠之前,我想檢查我的jar名稱是否已更改。如何知道正在運行的jar名稱

我可以用這段代碼得到罐子的絕對位置,但我怎麼能得到它的名字?

File f = new File(System.getProperty("java.class.path")); 
    File dir = f.getAbsoluteFile().getParentFile(); 
    String path = dir.toString(); 

謝謝。

+0

它沒有多大意義。如果用戶更改了jar的名稱,則不需要在批處理文件中「查找」該jar。只要把它指向你已經知道的地方。對於用戶將其移動到另一個文件夾的情況,尋找這個jar也是一樣的。 –

+0

每次該jar運行選項「啓動在Windows啓動」作爲標記它將重新生成與當前位置和名稱的bat文件。 –

+0

如果你在這裏檢查文檔:http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html 你會發現系統屬性java.class.path可能包含不止一個你想要的目錄。類路徑中可以包含很多條目,然後您可以將它們排序。 Evgeniy Dofofeev的回答是,查詢類的位置似乎是找到jar文件位置的更強有力的方法。 – OYRM

回答

3

其中一個辦法是獲取類代碼源的URL,例如

URL r = JdbcTemplate.class.getProtectionDomain().getCodeSource().getLocation(); 
    System.out.println(r); 

打印

file:/D:/.repository/org/springframework/spring-jdbc/3.2.4.RELEASE/spring-jdbc-3.2.4.RELEASE.jar 

在我的項目

+0

謝謝,它的工作原理。 –

相關問題