Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从本机java应用程序启动runnable run_Java_Eclipse_Jar_Nativeapplication - Fatal编程技术网

从本机java应用程序启动runnable run

从本机java应用程序启动runnable run,java,eclipse,jar,nativeapplication,Java,Eclipse,Jar,Nativeapplication,我目前有以下问题: 我有两个java应用程序:更新程序和客户端。更新程序是一个本机应用程序(包含必要的JDK),而客户端只是一个可运行的jar文件 当用户启动应用程序时,它基本上会启动更新程序,更新程序在服务器上搜索客户机应用程序的更新。当出现新的更新时,更新程序下载更新并将其放入文件中(或覆盖当前jar文件)。然后,我执行下载的.jar文件,如下所示: private void startApplication() { Runtime rt = Runtime.getRuntime(

我目前有以下问题:

我有两个java应用程序:更新程序客户端。更新程序是一个本机应用程序(包含必要的JDK),而客户端只是一个可运行的jar文件

当用户启动应用程序时,它基本上会启动更新程序,更新程序在服务器上搜索客户机应用程序的更新。当出现新的更新时,更新程序下载更新并将其放入文件中(或覆盖当前jar文件)。然后,我执行下载的.jar文件,如下所示:

private void startApplication() {

    Runtime rt = Runtime.getRuntime();
    try {
        Process pr = rt.exec("java -jar libs/myJar.jar");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
在Eclipse中构建和运行时,这很好,但是当我运行本机应用程序(由Eclipse构建)时,myJar.jar不会被执行。我认为这是因为更新程序找不到jar文件,因为它的绝对路径变得不同

我的问题:如何确保本机应用程序可以执行下载的jar文件

注意:我目前正在Mac OSX上构建该应用程序,因此我正在使用.dmg进行测试。我不知道Windows或Linux是否也存在此问题

编辑1:路径似乎没有问题,因为这似乎没问题(通过@Funtik测试,谢谢)


编辑2:文件权限似乎也正确。也许这与客户端jar不知道使用哪个JVM有关?

必须使用绝对路径

 String path = new File(".").getAbsolutePath();
 Process pr = rt.exec("java -jar "+ path + "/libs/myJar.jar");

谢谢你的回复!我刚试过,但似乎不起作用。从IDE运行它时,它确实可以工作,但在编译本机应用程序并运行它时,它就不能工作了。请尝试将路径输出到console并查看您的实际位置。这是路径:/Applications/MyApp.app/Contents/Java/,看起来还可以。那么client.jar的完整路径如下/Applications/MyApp.app/Contents/Java/libs/myJar.jar?是的,它是正确的。当我从包中运行jar时,一切似乎都很好。所以可能是包裹有问题。