运行JAR文件需要同时安装JRE和JDK吗?

18

可以在本地运行JAR文件,接下来是在另一台计算机上运行。

问题是是否需要安装JRE、JDK或者两者都需要才能运行JAR文件?


1
当然,要运行一个Jar文件,你只需要Java运行时环境(jre),而不需要Java开发工具包(jdk),因为jre已经包含在其中了。但是我不太清楚你所说的“在其他系统中运行此jar文件”是什么意思,你是指在另一台电脑上运行吗? - nurgan
8个回答

41

JDK 包含 JRE。

大多数程序只需要 JRE(Java 运行环境),但有些程序在运行时需要编译器,这时就需要 JDK。

如果您已经安装了 JDK,则不需要再安装 JRE。


@nobalG,现在我有足够的声望来评论了,这里有一个情景需要你考虑:我遇到了这样一种情况,我想编写代码,在运行时编译其他代码,然后使用已编译的代码。在我的情况下,我正在创建一个工具,可以基于特定框架获取测试类,编译它,加载类,并从中提取测试数据,以便数据可以作为端到端测试的一部分使用。为了使该工具正常运行,必须使用JDK运行它,以便它可以使用Java编译器。 - D.B.

4
在被接受的答案的评论中,nobalG问道:“如果jre已经存在,为什么还需要编译器?”在撰写本文时,我没有足够的声望来发表评论,因此我在这里回复了。我曾遇到一种情况,我想编写能够在运行时编译其他代码并使用该编译代码的工具。在我的情况下,我创建了一个工具,可以基于特定框架获取测试类,编译它,加载该类,并从中提取测试数据,以便将数据用作端到端测试的一部分。为了使该工具正常运行,必须使用JDK运行它,以便它可以使用Java编译器。

4

运行一个jar文件只需要java.exe(在Windows系统中)。JDK是Java的开发工具包,而JRE则是运行时环境。JDK包含JRE。


2
对于Linux系统,您可以使用apt-get安装Java SDK,或者使用Synaptic软件包管理器,也可以从Oracle官网下载二进制文件。 - Akhi
如果正在执行的代码依赖于仅包含在JDK中的项目(例如JavaCompiler),则第一条语句不正确。请参见此答案以获取示例。 - D.B.

3
您只需要JRE。
如果您要运行的jar文件在清单文件中具有Main-Class: 头,则可以通过以下命令简单地运行jar文件:
java -jar [您的jar文件名]
如果清单文件没有该条目(并且您知道包含main函数的类的完整限定名称),则可以通过以下命令运行jar文件:
java -cp [jar文件的绝对路径] [包含主函数的完整限定类名]

如果正在执行的代码依赖于仅包含在JDK中的项目,例如JavaCompiler,则情况并非如此。请参见此答案以获取示例。 - D.B.

3

运行jar文件只需要JRE。您可以使用以下命令运行jar文件:

java -jar [jar文件名]


1
这并不总是正确的。如果JAR包中包含依赖于JDK而不是JRE(例如JavaCompiler)的项目,则可能无法在没有JDK的情况下正常运行或根本无法运行。请参见此答案以获取示例。 - D.B.

2

JRE足以运行。

JDK用于开发。


如果正在执行的代码依赖于仅包含在JDK中的项目,例如JavaCompiler,则情况并非如此。请参见此答案以获取示例。 - D.B.

1
您需要一个JRE但不需要JDK。 JRE是Java运行时环境,没有它不能执行Java代码。.jar是已编译的Java文件,需要Java运行时环境才能运行。

1
这个答案有误导性,因为它暗示了JDK不足和不相关。我认为更精确的答案应该是:“你需要其中之一。任何一个都足够了,因为JDK包含JRE。如果你打算自己进行Java编程,请使用JDK。” - Jon Coombs
如果正在执行的代码依赖于仅包含在JDK中的项目,例如JavaCompiler,则情况并非如此。请参见此答案以获取示例。 - D.B.

0

你想运行jar文件,所以你只需要Java运行时环境(即JRE)。


如果正在执行的代码依赖于仅包含在JDK中的项目,例如JavaCompiler,则情况并非如此。请参见此答案以获取示例。 - D.B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接