Java 如何从jar运行exe?

Java 如何从jar运行exe?,java,jar,Java,Jar,我有一个简单的java类,如下所示 public class Launcher { public static void main(String[] args) { launchURLInBrowser("http://google.com"); } private static void launchURLInBrowser(String url) { try { Process p = Runtime.get

我有一个简单的java类,如下所示

public class Launcher {

    public static void main(String[] args) {
        launchURLInBrowser("http://google.com");
    }

    private static void launchURLInBrowser(String url) {
        try {
            Process p = Runtime.getRuntime().exec(new String[]{"C:\\Users\\Administrator\\Downloads\\chrome-win\\chrome.exe", "--kiosk", url});
            p.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
我在课堂上做的唯一一件事就是在kiosk模式下启动chromium web浏览器,它工作得很好

现在,我需要将这个类绑定到jar文件中并分发它。我将把jar和web浏览器zip一起分发。所以,我需要放置相对路径,而不是我现在给出的硬代码路径

我的jar发行版将具有以下文件夹结构。Chrome浏览器不会放在罐子里。它将是外部的,但在同一文件夹内,如下所示

launcher.jar
chrome-win
    -other files and folders
    -chrome.exe

我该怎么做

我想你可以试试使用

getClass().getClassLoader().getResource("Downloads\\chrome-win\\chrome.exe")

而不是绝对路径。。。或者尝试这种逻辑

我想您使用的是Windows操作系统。 我更喜欢那样的文件夹

launcher.bat
jre
lib
   -launcher.jar
chrome-win
   -other files and folders
   -chrome.exe
在launcher.bat中

使用bat获取当前路径,并将其用作Java的根路径 设置Java homeRootPath/jre、classpathRootPath/lib等 执行Launcher.java,使用chrome.exe路径和url作为main方法的参数。
希望这能有所帮助。

如果您确信绝对路径始终保持不变,请将相对路径与绝对路径放在一起,或者将路径作为参数传递,然后像private static void launchURLInBrowserString chromeExePath一样使用,字符串url。因为从操作系统的角度来看,在ZIP/JAR文件中chrome.exe不是一个真实的文件,所以您必须将其解压缩到某个临时位置并从那里启动,或者使用操作系统浏览器。@JoachimSauer No.我在JAR中没有ZIP。看,我对这个问题做了修改。那不行。操作系统将只启动真实文件,而不是jar文件中的文件。