【发布时间】:2014-08-08 06:46:32
【问题描述】:
我正在制作一个可以重新启动任何调用它的方法的类的库。它只需要类来构建命令。这是我目前所拥有的:
public static void restart(Class a) {
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
try {
File currentJar = new File(a.class.getProtectionDomain().getCodeSource().getLocation().toURI());
/* is it a jar file? */
if(!currentJar.getName().endsWith(".jar")) {
return;
}
/* Build command: java -jar application.jar */
final ArrayList<String> command = new ArrayList<>(5);
command.add(javaBin);
command.add("-jar");
command.add(currentJar.getPath());
final ProcessBuilder builder = new ProcessBuilder(command);
builder.start();
System.exit(0);
} catch (URISyntaxException | IOException ex) {
Logger.getLogger(a.class.getName()).log(Level.SEVERE, null, ex);
}
}
问题是变量“a”未被识别为参数。有人可以帮忙吗?
【问题讨论】:
-
重启任何课程什么意思?
-
首先,您是否遇到任何错误?是否有一些不良行为?这段代码是……错误的怎么办?您需要详细说明,因为虽然可以将其放入 IDE,但最好提前了解您遇到的错误/困难。
-
不确定你到底想做什么。但是如果你正在接受一个 Class 类型的输入,然后你想在它上面调用一些方法,那么你需要使用反射。
-
如果你试图重新加载类..你需要编写一个自定义类加载器然后通过它加载类..但我不明白这里是你为什么需要这样做是吗?
-
它做了一个
System.exit(0);
标签: java class parameter-passing