这与另一个用户询问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
启动的? javaw
启动程序? 最佳答案
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");
}
}
}
但是,从Eclipse中运行时,即使以
System.console()
开头,null
仍将返回java
。在Eclipse的启动配置的JRE选项卡中,如果将运行时JRE更改为Alternate JRE,则可以将Java可执行文件从
javaw
更改为java
。关于java - 我可以确定Java程序是使用Java还是JavaW启动的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2469047/