【问题标题】:Java ProcessBuilder in UbuntuUbuntu 中的 Java ProcessBuilder
【发布时间】:2014-05-22 04:40:11
【问题描述】:

基本上我想在 /home/linux/src 目录中打开一个 bash 文件 命名 i 是 java 中使用 Netbeans 的可执行文件.. 当我在 Java 文件中按下一个按钮时,它将打开 bash 文件..

Process p = null;
ProcessBuilder pb = new ProcessBuilder("i");
pb.directory("/home/linux/src");
p = pb.start();

有什么想法吗?

【问题讨论】:

  • nope got error at pb.directory() string cannot be convert to file
  • “命名 i 是 java 中使用 NetBeans 的可执行文件”?这甚至意味着什么?

标签: java ubuntu processbuilder


【解决方案1】:

如果您查看API,您会发现 ProcessBuilder 将文件作为参数而不是字符串。

试试

pb.directory(new File("/home/linux/src"));

还有

ProcessBuilder pb = new ProcessBuilder("./i"); 

如果. 不在你的路径中(好主意)

【讨论】:

  • 还是一样打不开bash文件
  • 可以编译但是还是打不开bash文件 try { //try语句 Process p = null; ProcessBuilder pb = new ProcessBuilder("i"); pb.directory(new File("/home/linux/src")); p = pb.start(); } catch (IOException e) { JOptionPane.showMessageDialog(null,"Error"); }
  • 那么是抛出异常了吗?你怎么知道打不开?
  • 打开错误信息但不打开 bash 文件
  • 那么例外是什么? e.printStackTrace ();
【解决方案2】:

如果您想使用ProcessBuilder 执行程序,您需要将绝对路径传递给它,或者确保该程序在您的PATH 环境变量中。调用pb.directory("/path/to/program"); 不会自动让Java 找到你的程序(除非.,当前目录,在你的PATH 中)。

如果你想在/home/linux/src 中运行一个程序i,你应该这样做

pb = new ProcessBuilder("/home/linux/src/i");
pb.start();

但请注意,要使其正常工作,i 必须是脚本或可执行二进制文件并设置了可执行位(请参阅 man chmod 了解如何执行此操作)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多