这与另一个用户询问How to detect that code is running inside 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));

但这并不能告诉我它是使用java还是javaw启动的。
  • 是否有办法找出它是使用java还是javaw启动的?
  • 为什么Eclipse为什么使用javaw启动程序?
  • 最佳答案

    System.console()将返回null,因为使用javajavaw之间的唯一区别是对于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");
            }
        }
    }
    

    但是,从Eclipse中运行时,即使以System.console()开头,null仍将返回java

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

    关于java - 我可以确定Java程序是使用Java还是JavaW启动的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2469047/

    10-11 02:37