java.exe和javaw.exe有什么区别?

java.exe是运行class文件用的,即执行class文件。

而javaw.exe是干什么用的?参考我的:

http://blog.csdn.net/ideality_hunter/article/details/51376006


------javaw和java的区别,其他人的解释:

http://blog.csdn.net/u010890857/article/details/45753833

java.exe和javaw.exe有什么区别?_第1张图片


最好的解释:

http://blog.csdn.net/cuser_online/article/details/6219482

java.exe和javaw.exe有什么区别?_第2张图片

java.exe和javaw.exe有什么区别?_第3张图片

------总结

1Eclipse使用的是javaw.exe,而不是java.exe

java.exe和javaw.exe有什么区别?_第4张图片


2为什么在Eclipse中启动tomcat,进程中就会多出一个javaw.exe?

java.exe和javaw.exe有什么区别?_第5张图片


3java.exe运行的程序之后cmd控制台进入阻塞状态,正在运行的cmd控制台不能输入其他命令,而用javaw.exe运行java程序的话,控制台还可以输入其他命令。

所以,一般用javaw.exe运行具有图形界面即GUI的class文件,而java.exe运行需要在控制台输出东西的class文件。


5java.exe是需要控制台即cmd的,而javaw.exe是不需要控制台即cmd的。所以单纯启动tomcat是java.exe,而Eclipse中启动tomcat是使用的javew.exe。

单纯启动tomcat,使用的java.exe,因为程序员写的代码如果调用了system.out.println("XXX");,是需要控制台即cmd输出的。而javaw.exe是不会将system.out.println("XXX")输出的到控制台的,因为javaw.exe不调用控制台即cmd:

java.exe和javaw.exe有什么区别?_第6张图片

而从Eclipse中启动tomcat,使用的是javaw.exe,即不需要在控制台输出,因为Eclipse有自己的控制台,不需要弹出windows的控制台进行输出。





----------------------------使用一句话,概括java.exe和javaw.exe的区别:

两者其实没有区别,只有一点区别:

1双击java.exe会弹出一个控制台,而双击javaw.exe不会弹出任何东西。

这是因为java.exe会调用System.console();功能是获取到当前控制台,如果没有打开控制台(如在Eclipse中运行class,是使用的Eclipse的控制台,而不是再弹出一个系统的DOS控制台),是会报错的。但是在cmd中,使用java.exe运行命令,就不会报错。

如:

https://www.oschina.net/question/271613_50458

java.exe和javaw.exe有什么区别?_第7张图片

java.exe和javaw.exe有什么区别?_第8张图片


---------------一言以蔽之:

java.exe和javaw.exe没有区别,都是运行class文件用的,只有一点:

java.exe需要开启DOS控制台。

javaw.exe不需要开启DOS控制台。


------------终于明白了,原来是这样,如下,懂了下面的,就真正懂了javaw.exe是什么东西了。

-----------疑问,既然javaw.exe不能将System.out.println("XXX");输出到控制台,那么为什么Eclipse使用了javaw.exe却可以将System.out.println("XXX");输出到Eclipse自己的控制台。

以下跟我有相同疑问:

java.exe和javaw.exe有什么区别?_第9张图片

答案在这里:

Eclipse一定是使用是深度使用了了javaw.exe,然后将System.out.println("XXX");输出的东西拿到,然后写入Eclipse的某个临时文件中,然后Eclipse自己的控制台去读取这个临时文件,这样System.out.println("XXX");的内容不就打印到Eclipse自己的控制了。就是这样。

java.exe和javaw.exe有什么区别?_第10张图片

我亲测,使用javaw.exe不是不可以输出System.out.println("XXX");,而是没有在控制台输出而已,其实它是输出了的,输出方式有很多:如写入txt文件等。







你可能感兴趣的:(java.exe和javaw.exe有什么区别?)