好的,所以我是超级,额外,全新的java编码,但我慢慢得到所有的条款。但真正的问题是这个错误。我尝试做一个小编码片段,在启动时会打开一个批处理文件(我对它们更有经验)。我非常寻找答案,但没有解决它,所以我发布了关于我的具体情况。
这是代码:
public class Startbat {
public static void main(String[] args){
try {
Runtime.getRuntime().exec("cmd /c start hello.bat");
}
catch (IOException) {
System.out.println ("Something is wrong here...");
}
}
}
当我尝试javac时,我明白了:
C:\Users\Owner>javac -g "C:\Users\Owner\Desktop\codes\codes\Startbat.java"
C:\Users\Owner\Desktop\codes\codes\Startbat.java:6: error: <identifier> expected
catch (IOException) {
^
1 error
我发现我得到的错误是关于catch line / block不在方法中,当我确定它在主要内部时。
我在那里有一些例外的错误,但我想我解决了它。我不知道异常会是什么((意思是如何从runtime.exec的东西发生IOException)意味着这意味着如果批处理文件确实起作用,它将不会启动批处理文件吗?)
任何帮助都会受到赞赏,即使它只是&#34;这是不可能的&#34;
答案 0 :(得分:2)
您需要为异常指定一个变量,以便稍后使用它,例如......
catch (IOException exp) {
你也应该考虑打印异常,至少是控制台,如果不是某种记录器...
catch (IOException exp) {
ex.printStackTrace();
//...
这样可以更容易地追踪潜在问题是否/何时发生。
作为旁注,您确实应该使用ProcessBuilder
而不是Runtime.exec
,除了其他任何内容之外,它还可以更好地管理包含空格的输出流和agruments ......