Java Runtime.exec未运行cd
Runtime.getRuntime().exec() 当我传递命令“cd filename”时,前者不起作用Java Runtime.exec未运行cd,java,ioexception,Java,Ioexception,Runtime.getRuntime().exec() 当我传递命令“cd filename”时,前者不起作用 完整代码 package com.piomnicron.riles; import java.io.File; import javax.swing.JOptionPane; public class A { protected static Runtime B = Runtime.getRuntime(); public static void main(String[] a
完整代码
package com.piomnicron.riles;
import java.io.File;
import javax.swing.JOptionPane;
public class A {
protected static Runtime B = Runtime.getRuntime();
public static void main(String[] args) {
File E = new File("");
System.err.println(E.getAbsolutePath());
try{
B.exec("cd "+E.getAbsolutePath()+"\\");
}catch(Throwable e)
{
JOptionPane.showMessageDialog(null, "had an oopsie!");
e.printStackTrace();
}
}
}
我的问题是,为什么它抛出以下IOException:
cannot run program "cd": CreateProcess error = 2, The system could not find the file specified
我先在没有“+”\”的情况下尝试过,以防有人认为这可能是答案
我在谷歌上搜索了一下,我找到的答案中没有一个能以任何方式回答我的问题,它们都专注于打开一个jar或文件,但我只想知道为什么cd命令不起作用。我不能为cd使用绝对路径,因为这意味着如果有人移动它所包含的文件夹,它将断开
错误是B.exec();以防你想知道
请原谅任何语法错误,太阳在我的眼睛里,我几乎看不到屏幕。您不能(有效地)通过Runtime.exec发出cd
命令。大多数操作系统上的cd
命令是shell的内置命令,而不是可执行文件(这就是为什么会出现错误),它在shell的运行时环境中运行。尽管您可以使用Runtime.exec
启动shell并在其中执行cd
命令(对于cmd.exe/c“cd path”
的窗口),但它只会更改shell中的当前目录,而不会更改正在运行的程序
您需要做的是使用文件
的各种功能解析程序中的目录,并将解析的绝对文件路径用于您试图使用cd
的任何内容
如果您发布一个(新)问题,说明您使用cd
试图实现什么,我们可以帮助您实现,但使用Runtime.exec
发布cd
不是解决方案。使用Runtime.getRuntime().exec()运行cd
您想做什么?您是否正在尝试更改正在运行的Java类(A
)的当前目录?@LukeWoodward否,我正在尝试在那里运行命令,实际上我正在尝试运行jar文件,但使用的是B.exec(“Java-jar-PotatoScript.jar”)代码>[不要问]您认为执行cd
的结果会是什么?将命令放入.bat
(或.cmd
)文件中,然后可以执行该命令。