Java 无法使用Desktop.getDesktop()执行jar文件。打开(新文件(";C:/path/firefox.jar););当jar需要外部文件时

Java 无法使用Desktop.getDesktop()执行jar文件。打开(新文件(";C:/path/firefox.jar););当jar需要外部文件时,java,jar,executable-jar,Java,Jar,Executable Jar,我有一个用selenium打开浏览器的项目。结构看起来像这样: myProyect src com.open OpenFirefox.java lib geckodriver geckodriver.exe 如果我制作了一个jar文件,我只能在jar与lib/geckodriver/geckodriver.exe位于同一位置时执行jar。控制台中的双击和java-jarfirefox.jar都可以工作 现在,我需要从另一个程序执行

我有一个用selenium打开浏览器的项目。结构看起来像这样:

myProyect
   src
     com.open
        OpenFirefox.java
   lib
     geckodriver
        geckodriver.exe
如果我制作了一个jar文件,我只能在jar与
lib/geckodriver/geckodriver.exe
位于同一位置时执行jar。控制台中的
双击
java-jarfirefox.jar
都可以工作

现在,我需要从另一个程序执行这个jar。我已经用
Desktop.getDesktop().open(文件)打开了其他没有依赖项的JAR没有问题,但是当我尝试

try {
    File file = new File("C:/Users/user/Desktop/firefox.jar");                  
    Desktop.getDesktop().open(file);
} catch (Exception e) {
    e.printStackTrace();
}
什么也没发生,我甚至没有出错

发生了什么事?

您应该使用


你确定这个jar配置了入口点吗?我只是右键单击/export/runnable jar file/finish。我需要配置其他东西吗?它有主方法吗?如果是这样,这是在.jar文件的清单文件中配置的吗?如果没有,它就不是一个可执行的jar文件,而是一个库。我有一个main方法,清单文件中的main类就是一个main方法的类(我只有一个类)。你在使用外部库吗?
Process process = Runtime.exec("java -jar " + filepath);
if (process.waitFor() == 0) {
    System.out.println("process ran without errors");
}