我可以找出java程序是使用java还是javaw启动的

sau*_*ata 8 java eclipse javaw

这与另一个用户的早期问题有关,询问如何检测代码是否在eclipse IDE中运行.

我注意到Eclipse总是启动程序javaw而不是java.(这并不意味着javaw从Eclipse启动的程序启动).

我可以找到使用的参数

RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
List<String> lst = RuntimemxBean.getInputArguments();
for (int i = 0; i < lst.size(); i++)
    System.out.println(lst.get(i));
Run Code Online (Sandbox Code Playgroud)

但这并没有告诉我它是否是使用java或启动的javaw.

  1. 有没有办法找出它是否是使用java或推出javaw
  2. 为什么Eclipse用于javaw启动程序?

Ste*_*nne 6

System.console()将返回null,因为使用java和之间的唯一区别javaw是,javaw没有关联的控制台窗口.

这是一个小测试程序,您可以用它来演示:

import javax.swing.JOptionPane;
public class ConsoleTest {
    public static void main(String[] args) {
        if (System.console() == null) {
            JOptionPane.showMessageDialog(null, "System.console() is null");
        } else {
           JOptionPane.showMessageDialog(null, "System.console() is not null");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,从Eclipse内部运行时,即使在启动时System.console()仍会返回.nulljava

在Eclipse的启动配置,JRE选项卡中,如果将Runtime JRE更改为Alternate JRE,则可以将Java可执行文件从更改javawjava.