【问题标题】:Possible to run JAR file on any OS?可以在任何操作系统上运行 JAR 文件吗?
【发布时间】:2011-02-21 03:22:07
【问题描述】:

是否可以在任何操作系统(如 Windows、Linux、Mac OS X)上执行 JAR 文件?我想构建一个简单的应用程序,我想在 Linux、Windows 和 Mac OS X 上运行。JAR 文件可以在任何安装了 java 的操作系统上运行吗?

【问题讨论】:

    标签: java jar


    【解决方案1】:

    Jar 文件可在任何存在 JVM 的操作系统上运行。

    【讨论】:

    • 好吧,在安装了所需版本的 JVM 的任何 O/S 上;如果你使用 Java 6 API,那么 Java 5 JVM 对你没有好处。
    【解决方案2】:

    是的,只要您不使用任何本机库 (JNI),这就是 java 的工作方式。它独立于平台。

    【讨论】:

    • 而且没有 Java Native Access :-) 并记住每个平台上的文件路径分隔符是不同的。
    • @Pindatjuh:JNA 是 JNI 之上的一层,因此原生支持限制是给定的;但是它支持多个操作系统,而且碰巧的是,JNA 支持他特别提到的 3 个:JNA has been built and tested on OSX (ppc, x86, x86_64), linux (x86, amd64), FreeBSD/OpenBSD (x86, amd64), Solaris (x86, amd64, sparc, sparcv9) and Windows (x86, amd64). It has also been built for windows/mobile and Linux/ppc64, although those platforms are not included in the distribution.
    【解决方案3】:

    正如其他人所说,只要您安装了 Java 并避免使用本机代码,您应该可以继续使用。需要注意的一点是,您通常只需双击 JAR 文件即可运行它,它会像本机可执行文件一样打开(在 Windows 上这是默认工作方式,在其他操作系统上您可以配置此行为)。

    此类 JAR 文件称为可执行 JAR 文件。如果您要创建的是一个可执行的 JAR 文件,那么您需要添加一个清单文件,该文件告诉 Java 虚拟机 (JVM) 主类的名称。可执行的 JAR 文件也可以通过以下方式在命令行上运行:

    java -jar myprogram.jar
    

    如果您的 JAR 不是可执行 JAR,那么要运行您的程序,您必须将 JAR 添加到类路径中,然后执行主类。将 JAR 添加到类路径:

    java -classpath path/to/your/program.jar com.mypackage.Main
    

    【讨论】:

    • 直接双击 JAR 很少起作用,因为这意味着没有参数被发送到 main 或 JVM。
    • @Skeptic:定义“很少”。在实践中,我使用了很多 Java 程序,它们都不需要命令行参数。
    • @LawrenceDol 我刚刚创建了一个可执行的 jar 文件,并且在我实际编写代码的机器上工作得非常好(我在 windows 8.1 pro 上工作)但是当我尝试运行 jar 文件时从 Windows 7 专业机器它给了我 JVM 错误,我不知道如何修复它。你有什么建议?
    • @Sara:没有看到你的命令行和错误就不可能说;您可以打开一个问题并将链接放在评论中,以便我找到它。但我最好的猜测是 Windows 7 机器找不到 JVM 可执行文件,并且您的命令行在该机器上不正确。我总是将我的 JVM 安装到固定位置并使用显式路径,例如C:\Program Files (x86)\JavaRE\bin\java -jar xxx.jar
    【解决方案4】:

    Jar 文件旨在在安装了兼容版本的 JVM 的任何操作系统上运行。然而,一些 jar 文件可能是从使用特定操作系统代码的 Java 代码编译而来的(比如与 Windows 注册表对话),因此在其他操作系统上对其进行测试是明智的。

    【讨论】:

    • 我同意,我的 jar 文件就是这种情况,因为它是为处理 Windows 注册表而编写的,因此在 MAC OSX 上运行它是没有意义的。
    【解决方案5】:

    是的,只要它没有从终端或命令提示符(如java -jar name.jar)破坏它就可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2015-06-14
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多