【问题标题】:Java opened applications can't find directoriesJava 打开的应用程序找不到目录
【发布时间】:2014-05-16 14:10:59
【问题描述】:

我有两个不同的 python 可执行程序,它们在其应用程序中引用图片或 .txt 文件。当我按原样打开它们时,它们可以正常工作。我有一个在 Java 中使用的主程序,通过单击执行按钮来打开应用程序:

    final String filePath = appList.get(1).get(3);//a string of the file directory
    try {
         Runtime.getRuntime().exec(filePath);
    } catch (IOException e) {
         System.err.println("Caught IOException: " + e.getMessage());
    }

当我从这个主程序启动程序时,即使目录保持不变,它也无法再找到这些文件。唯一似乎改变的是,我是从 java 程序启动应用程序,而不是仅仅单击应用程序本身。有人知道该怎么做吗?

编辑: 我正在尝试:

    String fileDir = appList.get(2).get(3).substring(0,appList.get(2).get(3).lastIndexOf("\\"))+"\\";
    Process p = null;
    ProcessBuilder pb = new ProcessBuilder(lastWord);
    pb.directory(new File(fileDir));
    p = pb.start();

但是system cannot find the file specified

【问题讨论】:

    标签: java runtime.exec


    【解决方案1】:

    为您通过第三个 Java 应用程序启动的每个应用程序使用 ProcessBuilder。对于每个应用程序,适当地设置工作目录(目标应用程序的根目录)。我怀疑您从第三个启动的两个应用程序的工作目录正在使用第三个程序工作目录作为自己的工作目录。下面是一个如何使用 ProcessBuilder 的示例。

    How to set working directory with ProcessBuilder

    您可以查看此帖子以查找应用程序的当前工作目录:Getting the Current Working Directory in Java

    【讨论】:

    • @Cole,我仍然认为这是一个工作目录问题。我不是用python写的,所以我不知道典型的部署目录结构是什么样的。在 Java 中,工作目录可能会根据应用程序的构建和启动方式而有所不同。如果您的 python 应用程序打印出他们尝试打开的文件的绝对路径,您可以很快找出他们期望的工作目录。
    • 是的,感谢您的帮助。如果我弄清楚了,我会发布。
    • @Cole,如果您编写了 python 应用程序,您可以使用这篇文章:stackoverflow.com/questions/5137497/… 打印出工作目录。比较通过 java 应用程序启动时的输出与单独启动它时的输出。此外,那个子字符串位很糟糕。您可以使用 File.getParent() 返回父目录。
    • 我会调查的。谢谢你的诚实哈哈,我刚开始使用java。
    猜你喜欢
    • 2022-10-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多