【问题标题】:Execute shell command from java in specific folder从特定文件夹中的java执行shell命令
【发布时间】:2017-03-09 12:42:08
【问题描述】:

我有一个 C 代码,我已经编译并添加到路径中,以便能够在任何地方执行它(我已经仔细检查过我可以这样做)

现在我想做一个 GUI 以更简单的方式使用它。我要求用户输入一个文件和一个输出目录。

在一个点击按钮中,我放置了从 GUI 执行命令的代码:

String command = "myprogram -e " + file;
new ExecuteShellInstruction().main(command,jTextOutputDirectory.getText());

我在其他类中执行代码:

p = Runtime.getRuntime().exec(command, null, new File(directory));

但我总是得到这个错误:

java.io.IOException: Cannot run program "myprogram" (in directory "/Users/user_name/Documents/folder/example"): error=2, No such file or directory

我已经检查过,如果我从同一个文件夹中写入完全相同的内容,则没有问题。

知道我在做什么吗?,如果从标记为正确的问题中获得这种方法,也许我错过了一些东西,但我已经尝试了 1 个小时,但似乎什么也没有上班。

谢谢!

【问题讨论】:

  • 它清楚地表明它无法在当前工作目录中找到文件
  • @ShreyasSarvothama 是的,它是这么说的。但是正如我在 shell 中直接在该目录中执行此操作时提到的那样,它可以完美运行..
  • 但是你在哪里工作你的java代码..先设置目录然后运行它..shell默认目录不同,java工作目录不同
  • @ShreyasSarvothama 对不起,我不明白你的意思。正如我对 getRuntime().exec 方法的理解,我将 shell 指令 null 以及我希望在哪个文件夹中执行它指定为参数:docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

标签: java shell netbeans command execute


【解决方案1】:

终于找到了解决办法。 似乎您必须通过在开头添加“./”来告知您的应用程序可以执行。像这样的:

String command = "./myprogram -e " + file;

【讨论】:

  • 使用接受String[]的重载,否则将无法处理带空格的文件名。
  • 谢谢,您能具体说明一下在哪里吗?字符串 [] 命令?
  • @nck:见Runtime;还可以考虑ProcessBuilder,显示为here
  • @trashgod 我已经尝试按照您链接中的方式进行操作,但似乎我现在遇到了更多麻烦':/ problem
  • @nck:遗憾的是,如果没有一个完整的例子,有太多的方法会出错。
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多