从java代码打开应用程序而不指定路径

时间:2014-09-10 12:18:42

标签: java

我在写一个应用程序。应用程序必须在满足某些需求时打开Firefox。我做了一个小研究。我只能找到以下代码。

Runtime rt = null;
rt = Runtime.getRuntime();

try {
    rt.exec("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe google.com");
} catch (IOException e) {
    e.printStackTrace();
}

我想知道的是,在没有提供路径的情况下打开特定应用程序的任何方法都是因为所有用户都不会在同一路径中安装应用程序。就像只搜索名字一样。请帮忙。提前谢谢。

4 个答案:

答案 0 :(得分:4)

您可以使用Desktop课程,详细了解doc here

        URI uri = null;
        try {
            uri = new URI("http://www.google.com");
            desktop.browse(uri);
        } catch(IOException ioe) {
            System.out.println("The system cannot find the " + uri + 
                " file specified");
            //ioe.printStackTrace();
        } catch(URISyntaxException use) {
            System.out.println("Illegal character in path");
            //use.printStackTrace();
        }

答案 1 :(得分:1)

实际上非常复杂,您可以使用Java 7中nio包提供的功能:

  

新的java.nio.file.Files类提供了一个工厂方法,walkFileTree,可以用来遍历目录和文件树。

要了解更多信息,请直接访问我刚刚引用的博客:https://blogs.oracle.com/thejavatutorials/entry/traversing_a_file_tree_in

答案 2 :(得分:1)

提供应用程序的名称并提供自动搜索确实是一项艰巨的任务。它涉及许多复杂问题:

  • 用户拥有什么样的操作系统(Windows有不同的路径样式,基于Unix的系统有不同)
  • 搜索应该在特定文件夹还是整个计算机中?在哪里搜索???

我会给你一个简单的建议,如果你正在开发一个GUI应用程序,允许用户给出路径并设置一个按钮("设置默认路径")并允许用户点击。因此,默认路径将存储在字符串变量中,您可以从`exec()`

调用它

答案 3 :(得分:1)

在路径中搜索可执行文件是shell的责任。从命令提示符或OS启动程序执行命令时,将调用此机制。要从java启用此机制,您应该通过Windows上的cmd或Linux上的/bin/sh运行应用程序。

在您的情况下,将代码更改为

rt.exec("cmd /c chrome.exe google.com")

EDIT 1.无论chrome是否是默认浏览器,这都将起作用。 2.如果系统path中没有chrome(例如,如果未安装),则无法使用此功能。

那么,那取决于你真正想要的是什么。如果您必须在默认浏览器中显示URL,请使用desktop.browse(uri);(正如@Arvind已经提到的那样)。但是,如果你真的想打开特定的应用程序(无论是否是浏览器),请使用我建议的方法。