java
,javaw
和 和有什么区别javaws
?
我发现在 Windows 上大多数 Java 的使用都是使用javaw
.
请参阅 Java 工具文档以了解:
- 该
java
工具启动 Java 应用程序。它通过启动 Java 运行时环境、加载指定的类并调用该类的main
方法来完成此操作。- 该
javaw
命令与 相同java
,只是javaw
没有关联的控制台窗口。javaw
当您不希望出现命令提示符窗口时使用。
javaws
命令,“ Java Web 启动命令”该
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并将在未来的版本中删除。
java: Java 应用程序执行器,与控制台关联以显示输出/错误
javaw:(Java 窗口化)应用程序执行程序与控制台无关。所以没有显示输出/错误。它可用于静默地将输出/错误推送到文本文件。它主要用于启动基于 GUI 的应用程序。
javaws:(Java web start)下载和运行分布式网络应用程序。同样,没有关联控制台。
它们都是 JRE 的一部分并使用相同的 JVM。
java.exe与控制台相关联,而javaw.exe没有任何此类关联。因此,当java.exe运行时,它会自动打开一个命令提示符窗口,其中显示输出和错误流。
javaw 命令与 java 相同,只是 javaw 没有关联的控制台窗口。如果不想显示命令提示符窗口,请使用 javaw。如果 javaw 启动程序失败,它会显示一个带有错误信息的窗口。
javaws 适用于 Java web start 应用程序、applet 或类似的东西,我怀疑。
我检查了输出重定向是否适用于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
在操作系统中打开一个内部进程(使用 java.lang.Process 类就足够了),并将已知的输出重定向传输到该进程。如果在命令行上没有给出重定向,则不会重定向任何内容,并且内部启动的进程javaw
没有任何控制台输出。java.lang.Process 的行为类似。虚拟机也可以使用此内部功能javaw
。
如果您使用“启动”,Windows 控制台会为 Windows 创建一个新进程以在启动后执行命令,但不幸的是,这种机制不会对启动的子进程使用给定的重定向。