java - 从 native java 应用程序启动可运行的运行

标签 java eclipse jar nativeapplication

我目前遇到以下问题:

我有两个java应用程序:更新程序客户端。更新程序是一个 native 应用程序(包含必要的 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 中构建和运行时效果很好,但是当我运行 native 应用程序(由 Eclipse 构建)时,myJar.jar 不会被执行。我认为这是因为更新程序找不到jar文件,因为它的绝对路径变得不同。

我的问题:如何确保 native 应用程序可以执行下载的 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");

关于java - 从 native java 应用程序启动可运行的运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291004/

相关文章:

java - 如何在Gradle项目中创建单个可执行jar

jar - 将 Storm 拓扑转换为 flink - "no entry class specified"?

java - 尝试安装保存在其类路径上的包的 Jar 文件显示 "Cannot Find The File Specified"

java - 如何在我的 Apache 网络服务器上托管 jar 文件?

android - Gradle 找不到 Android 支持存储库 - Eclipse Neon、Gradle 3.5、javafxports

java - 启动 Jboss 服务器时出错 : Exception in thread "pool-6-thread-5" java. lang.OutOfMemoryError: PermGen space

java - 大内存(数据大小)采集

java - 如何在一行中打印数组的所有内容?

Java断言错误不抛出错误

java - 在 Eclipse 中使用 maven-release-plugin