Answers:
请参阅说明文件:
java
命令1 / javaw
命令2
- 该
java
工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类并调用该类的main
方法来实现。- 该
javaw
命令与相同java
,除了javaw
没有关联的控制台窗口。使用javaw
时,你不想要一个命令提示符窗口出现。
javaws
命令,“ Java Web Start命令”
该
javaws
命令将启动Java Web Start,这是Java网络启动协议(JNLP)的参考实现。Java Web Start启动网络上托管的Java应用程序/小程序。
如果指定了JNLP文件,javaws
将启动JNLP文件中指定的Java应用程序/小程序。
该javaws
发射器有一组在当前版本支持的选项。但是,这些选项可能会在将来的版本中删除。
不推荐使用Java部署技术,并将在以后的版本中将其删除。
包括Javat Applet和WebStart功能在内的所有Applet API,Java插件,Java Applet Viewer,JNLP和Java Web Start(包括该javaws
工具)均已在JDK中弃用。 9,并将在以后的版本中删除。
Java的 Java应用程序执行程序,与控制台关联以显示输出/错误
javaw:(Java窗口化)申请执行人不能与控制台关联。因此,不会显示输出/错误。它可用于将输出/错误无提示地推送到文本文件。它主要用于启动基于GUI的应用程序。
javaws:(Java web start)下载并运行分布式Web应用程序。同样,没有控制台关联。
所有这些都是JRE的一部分,并且使用相同的JVM。
javaw
应该在我的PATH中吗?(不是)
javaw命令与java相同,只是javaw没有关联的控制台窗口。当您不希望显示命令提示符窗口时,请使用javaw。如果javaw启动器失败,它将显示一个带有错误信息的窗口。
我怀疑Javaws是用于Java Web Start应用程序,小程序或类似的东西。
我检查了输出重定向是否适用于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创建一个新进程,以便在启动后执行命令,但是不幸的是,此机制并未对启动的子进程使用给定的重定向。
java -cp ...
。正如几乎没有人想要的那样,javaw
是使该讨厌的窗口消失的选择。