Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Runtime.exec未运行cd_Java_Ioexception - Fatal编程技术网

Java Runtime.exec未运行cd

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

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[] 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
)文件中,然后可以执行该命令。