java 怎么创建一个新的进程

来源:百度知道 编辑:UC知道 时间:2024/05/13 15:17:50
我想用java写了一个JFrame窗体,在点击关闭按钮的时候调用一个批处理文件,然后主程序退出,批处理文件把主程序删除,然后删除自己。
现在我用的是Runtime.getRuntime().exec("*.bat");这个方法。但是现在运行主程序,点关闭,程序就卡死那里了。因为Runtime.getRuntime().exec()创建出来的也是子进程还是依赖于JFrame窗体。能不能用java创建出一个和本程序没有关系的新进程,或者是有什么其他的方法可以删除自身。(用java语言)
kenshin54 你的方法好像不行啊,还是只能删除别的文件,删除自己的话没反应,文件还是在那。

rnxefe 我觉得你的方法也行,能说的具体点吗?

kenshin54 你先在桌面上创建出来两个文件再删除是可以的,但是它自己本身的A.class能不能删除呢?这才是我想要的。。。或者是打成jar包之后,运行完,自己把自己删除,就像一些病毒,或者卸载程序。
kenshin54 非常感谢你的回答,你的方法我试过了,确实可以。但是我打成jar包之后为什么就不行了?
import java.io.File;

public class A
{
public static void main(String[] args)
{
File file = new File("A.class");
File file1 = new File("A.jar");
File file2 = new File("A.java");
file.deleteOnExit();
file1.deleteOnExit();
file2.deleteOnExit();
}
}
//A.java和A.class都能删除,唯独它自己A.jar删除不了。。。

yangguo2005 你的路径是怎么写的?路径没有错啊……
imp

你可以尝试一下File类的这个方法

deleteOnExit

我试过了,是可以删除自己的
这是我测试的代码,我在桌面创建了A.java,在main中删除了
A.java和A.class 可以删除的

import java.io.File;

public class A
{
public static void main(String[] args)
{
File file = new File("C:/Documents and Settings/kenshin/桌面/A.java");
File file1 = new File("C:/Documents and Settings/kenshin/桌面/A.class");
file.deleteOnExit();
file1.deleteOnExit();
}
}

我删的就是class文件啊,你没看见么这个我在这个A类的main方法中生成删除了
有这个A类生成的A.java文件和A.class文件,就是在自己的内部把自己删除了啊。

如果这个不能删除jar的话,我建议你写个bat批处理,在里面执行你的jar文件,如 java -jar xxx.jar 再写del xxx.jar这样jar文件关闭后这个xxx.jar就会被删除

估计得用到注册表 在重启时才行

以前写过一个程序就是把自己设置成开机启动模式
具体方式是在注册表项的开机启动中塞入一个批处理路径,这样在操作系统启动后就自动启动了这个批处理,然后再在这个批处理文件里做手脚,我的是让我的 java 程序启动(这样就实现了开机启动我的java程序了),你嘛,就删除一批文件就行了,不难,很容易实现,只是在 dos 下删除文件而已。

另外我觉得不太可能一个程序在自己运行中把自己给删除了吧?只有等到程序结束了才能把它自己给删除了

另外你也可以让 java