【发布时间】:2014-08-20 12:39:16
【问题描述】:
Java 程序的新手,因此对菜鸟问题表示歉意。我编写了一个 java 程序,我在终端窗口中使用“java myprog”命令运行该程序。我想将此程序提供给朋友,但不确定该人至少需要什么才能运行该程序。代码可以编译为完全独立于我的朋友可能拥有或不拥有的任何 java 安装运行吗?其他人是否需要重新编译代码?
【问题讨论】:
-
您需要创建一个
.jar文件。
标签: java
Java 程序的新手,因此对菜鸟问题表示歉意。我编写了一个 java 程序,我在终端窗口中使用“java myprog”命令运行该程序。我想将此程序提供给朋友,但不确定该人至少需要什么才能运行该程序。代码可以编译为完全独立于我的朋友可能拥有或不拥有的任何 java 安装运行吗?其他人是否需要重新编译代码?
【问题讨论】:
.jar 文件。
标签: java
你可以给他们编译后的输出(the .class)文件。
他们需要与您用于编译代码的版本兼容的 JRE 版本(但不是开发人员需要编译的 JDK)。最简单的方法就是匹配版本。例如,如果您使用的是 J2SE 7,则为您的朋友获取 JRE 7。
有了这个,您的朋友应该能够输入java myprog 并获得与您相同的结果。如果您希望您的朋友像您一样从命令行运行程序,那么这可能是最简单的方法。
所以,如果你在你的机器和你朋友的机器上都输入:
java -version
...如果您获得相同的主要版本,那么您可能是在正确的范围内。
你也可以创建一个executable .jar 文件,如果你想要你的朋友可以双击的东西,但他们仍然需要安装 JRE 的版本,如果你是创建可执行 JAR 可能会有点困难语言新手。他们需要一些学习和试错时间。这绝对是比选项#1更复杂的方法。
有些编译器可以将您的 java 程序转换为本机代码(Windows 中的 .exe 文件),但您需要知道您朋友正在运行什么操作系统,并确保您正在为您朋友的操作系统进行编译.
我几年前听说过的这些工具的一个例子是Excelsior JET(尽管我并不认可它是一种工具——只是说它们存在)。
这绝对是最高级/最困难的选项,并且比 选项 #2 包含更多的试错,但如果您谈论的是一个非常简单的程序,只有一个文件,那么它可能非常简单。
当然,我上次查看时 Excelsior JET 不是免费的。
【讨论】:
我已经写了一篇关于这个主题的整篇文章:
【讨论】:
您想创建一个可执行的 .jar 文件。如果您的朋友安装了 Java,他只需双击该文件即可运行该程序。
【讨论】:
Java 程序通常被编译成Java bytecode - 而不是原生可执行文件。编译后,生成的类文件将在任何足够新的JVM 上可执行,无论底层硬件平台或操作系统如何。但是,为了拥有 JVM,您的朋友通常需要安装适当的 Java 运行时环境 (JRE)。
另外,有一些方法可以将程序与 JRE 一起分发,但我相信这种方法并非易事。有一些程序,例如launch4j,可以在某种程度上自动化这个过程,如果你想这样做的话。
【讨论】:
如果朋友不在 myprog.class 所在的目录中,上面给出的建议提供 .class 文件并使用 java myprog 的选项可能不起作用,因为可能需要指定类路径。所以朋友可能要使用java -cp path_to_myprog myprog
【讨论】: