'java','javawv和'javaws'之间的区别


184

什么之间的区别javajavaw以及javaws

我发现Windows下大多数Java开始使用javaw


2
这是因为Windows有这样的烦人习惯,那就是每当您使用启动程序时,都会在前台启动实际的Terminal(甚至不应该称为“ Terminal” ...)java -cp ...。正如几乎没有人想要的那样,javaw是使该讨厌的窗口消失的选择。
Matthieu

Answers:


212

请参阅说明文件:

  • java命令1 / javaw命令2
    1. java工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类并调用该类的main方法来实现。
    2. javaw命令与相同java,除了javaw没有关联的控制台窗口。使用javaw时,你想要一个命令提示符窗口出现。
  • javaws命令Java Web Start命令”

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

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

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

    另请参见JDK 9发行说明不建议使用的API,功能和选项

    不推荐使用Java部署技术,并将在以后的版本中将其删除。
    包括Javat Applet和WebStart功能在内的所有Applet API,Java插件,Java Applet Viewer,JNLP和Java Web Start(包括该javaws工具)均已在JDK中弃用。 9,并将在以后的版本中删除。


69

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

javaw:Java窗口化)申请执行人不能与控制台关联。因此,不会显示输出/错误。它可用于将输出/错误无提示地推送到文本文件。它主要用于启动基于GUI的应用程序。

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

所有这些都是JRE的一部分,并且使用相同的JVM。


所以如果我已经安装了JRE,javaw应该在我的PATH中吗?(不是)
endolith 2014年

@endolith,以我的经验,在Windows上的Java安装不会向PATH变量添加任何内容。如果只安装了JRE,则可能必须手动将JRE / bin目录添加到PATH;如果已安装JRE和JDK,则应将JDK / bin添加到PATH中。
mcduffee 2014年

9

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


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应用程序,小程序或类似的东西。


链接断开:“请求的页面不存在或可能已移动。”
Peter Mortensen

1

我检查了输出重定向是否适用于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命令,控制台输出重定向既不能使用,java也不能用于javaw

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.