2015-02-09 59 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文件可以删除本身)