2015-02-09 88 views
1

我開發了一個簡單的java應用程序,是否有可能爲應用程序(可執行Jar文件)找到其當前路徑,並在一定時間後從當前位置和回收站中刪除它。如何通過它自行刪除可執行文件JAR文件?

+0

需要寫另一個jar來刪除該jar ...通常,如果你正在編寫病毒,你會這樣做以防止人們找到你的曲目,因爲一個程序刪除一個文件爲罪名。大多數時間在Windows中我們使用Windows安裝服務來處理這種卸載... – 2015-02-09 20:39:53

+1

@JohnVint我不知道他的意圖是什麼,他可能會嘗試自動更新他的應用程序。在這種情況下,他應該知道如何正確地做到這一點。 – 2015-02-09 20:41:39

+1

它不是病毒 – james 2015-02-09 20:43:23

回答

2

不,當java運行庫啓動並使用這個jar文件時,windows會阻止它被刪除。在Linux等其他操作系統中,即使使用文件,也可以刪除文件。

+2

這就是訣竅。當JVM使用它時,你不能刪除這個jar,但你可以做的是啓動另一個JVM(例如運行updater),並允許原始的JVM退出,釋放原始jar。 – MadProgrammer 2015-02-09 21:01:52

0

已經有問題/答案告訴你如何獲取當前運行的jar文件。請記住,這些方法並不一致跨平臺:

How to get the path of a running JAR file?

刪除Java中的文件是相當簡單的,以及:

import java.io.File; 
... 
new File("c:\\path\\to\\whatever.jar").delete(); 

上的操作系統不具備文件鎖定,你可以簡單地刪除你正在運行的jar,因爲它已經加載到內存中。在鎖定文件的操作系統上,如果JVM決定鎖定當前正在執行的jar,則可能無法執行此操作。

0

爲了刪除jar文件,我推薦:

  • 創建一個bat/sh的文件
  • 運行該文件
  • 關閉jar文件與System.exit方法

在蝙蝠/ sh的文件:

  • 循環直到成功刪除
  • 刪除本身內的bat/sh文件(不像jar文件bat/sh文件可以刪除本身)