我想知道java
/ javaw
/ javaws
之间有什么区别?我发现在Windows下,大多数Java都是使用javaw
开始的。
答案 0 :(得分:189)
请参阅以下文档:
java
command1/javaw
command2
java
工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类以及调用该类的main
方法来实现此目的。- 醇>
javaw
命令与java
相同,但javaw
没有关联的控制台窗口。当 不 想要显示命令提示符窗口时,请使用javaw
。
javaws
command,“Java Web Start命令”
javaws
命令启动Java Web Start,它是Java网络启动协议(JNLP)的参考实现。 Java Web Start启动网络上托管的Java应用程序/小程序。
如果指定了JNLP文件,javaws
将启动JNLP文件中指定的Java应用程序/小程序。
javaws
启动程序具有当前版本中支持的一组选项。但是,可能会在将来的版本中删除这些选项。
另见JDK 9 Release Notes Deprecated APIs, Features, and Options:
Java部署技术已弃用,将在以后的版本中删除
Java Applet和WebStart功能,包括Applet API,Java插件,Java Applet Viewer,JNLP和Java Web Start,包括javaws
工具都在JDK中被弃用9 ,将在以后的版本中删除。
答案 1 :(得分:61)
java: java应用程序执行程序,它与控制台关联以显示输出/错误
javaw:(java窗口化)应用程序执行程序与控制台无关。所以没有输出/错误的显示。可用于以静默方式将输出/错误推送到文本文件。主要用于启动基于GUI的应用程序
javaws:(java web start)下载并运行分布式Web应用程序。再次没有关联控制台。
所有都是JRE的一部分并使用相同的JVM
答案 2 :(得分:9)
java.exe 与控制台关联,而 javaw.exe 没有任何此类关联。因此,当运行 java.exe 时,它会自动打开一个命令提示符窗口,其中显示输出和错误流。
答案 3 :(得分:6)
javaw命令与java相同,只是javaw没有关联的控制台窗口。如果不希望显示命令提示符窗口,请使用javaw。如果失败,javaw启动程序会显示一个包含错误信息的窗口。
javaws适用于java web start应用程序,applet或类似我怀疑
的东西答案 4 :(得分:0)
我检查了输出重定向是否与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控制台启动命令,控制台输出重定向不适用于java和javaw。
解释,为什么这样:我认为javaw在OS上打开一个内部进程(足够使用java.lang.Process类),并将已知的输出重定向转移到该进程。如果在命令行上未提供任何重定向,则不会重定向任何内容,并且javaw的内部启动进程没有控制台输出。 java.lang.Process的行为类似。虚拟机也可以将此内部功能用于javaw。
如果您使用“启动”,则Windows控制台会为Windows创建一个新进程以在启动后执行命令,但是不幸的是,此机制并未对启动的子进程使用给定的重定向。