210

java,javaw和 和有什么区别javaws

我发现在 Windows 上大多数 Java 的使用都是使用javaw.

4

5 回答 5

240

请参阅 Java 工具文档以了解:

  1. java工具启动 Java 应用程序。它通过启动 Java 运行时环境、加载指定的类并调用该类的main方法来完成此操作。
  2. javaw命令与 相同java,只是javaw没有关联的控制台窗口。javaw当您希望出现命令提示符窗口时使用

javaws命令启动 Java Web Start,它是 Java 网络启动协议 (JNLP) 的参考实现。Java Web Start 启动网络上托管的 Java 应用程序/小程序。

如果指定了 JNLP 文件,javaws将启动 JNLP 文件中指定的 Java 应用程序/小程序。

启动器javaws有一组当前版本支持的选项。但是,这些选项可能会在未来的版本中删除。

另请参阅JDK 9 Release Notes 已弃用的 API、功能和选项

Java 部署技术已弃用,并将在未来版本中删除
Java Applet 和 WebStart 功能,包括 Applet API、Java 插件、Java Applet 查看器、JNLP 和 Java Web Start,包括该javaws工具,在 JDK 中均已弃用9并将在未来的版本中删除。

于 2011-11-19T14:43:48.327 回答
76

java: Java 应用程序执行器,与控制台关联以显示输出/错误

javaw:Java 窗口化)应用程序执行程序与控制台无关。所以没有显示输出/错误。它可用于静默地将输出/错误推送到文本文件。它主要用于启动基于 GUI 的应用程序。

javaws:Java web start)下载和运行分布式网络应用程序。同样,没有关联控制台。

它们都是 JRE 的一部分并使用相同的 JVM。

于 2014-02-04T04:11:16.260 回答
10

java.exe与控制台相关联,而javaw.exe没有任何此类关联。因此,当java.exe运行时,它会自动打开一个命令提示符窗口,其中显示输出和错误流。

于 2011-11-19T14:40:55.910 回答
6

http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html

javaw 命令与 java 相同,只是 javaw 没有关联的控制台窗口。如果不想显示命令提示符窗口,请使用 javaw。如果 javaw 启动程序失败,它会显示一个带有错误信息的窗口。

javaws 适用于 Java web start 应用程序、applet 或类似的东西,我怀疑。

于 2011-11-19T14:47:14.387 回答
2

我检查了输出重定向是否适用于javaw

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

这意味着,如果 Java 应用程序通过 System.out 或 System.err 打印出任何内容,则会将其写入这些文件,就像使用 java(不带w)一样。特别是在开始java时,JRE 可能会在错误输出管道上写入开始错误(找不到类)。在这方面,必须了解错误。javaw如果被调用,我建议在任何情况下都使用控制台重定向。

相反,如果你使用

start java .... 1>log.txt 2>err.txt

使用 Windows 控制台命令,控制台start输出重定向不适用于.javajavaw

解释为什么会这样:我认为这会javaw在操作系统中打开一个内部进程(使用 java.lang.Process 类就足够了),并将已知的输出重定向传输到该进程。如果在命令行上没有给出重定向,则不会重定向任何内容,并且内部启动的进程javaw没有任何控制台输出。java.lang.Process 的行为类似。虚拟机也可以使用此内部功能javaw

如果您使用“启动”,Windows 控制台会为 Windows 创建一个新进程以在启动后执行命令,但不幸的是,这种机制不会对启动的子进程使用给定的重定向。

于 2018-10-05T14:34:51.267 回答