当前位置: 首页 > 面试题库 >

我可以确定Java程序是使用Java还是JavaW启动的

林炫明
2023-03-14
问题内容

这与另一个用户先前提出的问题有关,该问题询问如何在EclipseIDE中检测代码是否正在运行。

我注意到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

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

问题答案:

System.console()将返回null,因为using
java和之间的唯一区别javaw是for 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选项卡中,如果将Runtime JRE更改为 Alternate JRE
,则可以将Java可执行文件从更改javawjava



 类似资料:
  • 问题内容: 有没有办法找出采用varargs的Java函数(或构造函数)是否实际上是用varargs或数组调用的? 说我有以下几点: 构造函数可以用单个参数调用,以后可以更改,如果我不复制构造函数中的数组,这些更改也将应用于成员变量,对吗?但是,如果用几个s 调用构造函数,则没有其他对array *的引用可以在类之外稍后对其进行更改,因此我可以直接对其进行分配。我可以告诉构造函数(或通常带有var

  • 问题内容: 我正在使用Apache-Commons-Net库。 我想知道FTP服务器是主动模式还是被动模式。 Apache-Commons-Net库中是否有类似的方法? (是一种在使用Java连接后告诉您连接模式的方法。我想先检查Maud) 问题答案: 正如@Erwin已经指出的,服务器未处于主动或被动模式。服务器通常同时支持两种模式。 您需要使用的模式通常取决于您和服务器之间 的网络配置 ,而不

  • 问题内容: 介绍 我听说过一些有关用Java编写设备驱动程序的信息(听说是“用我的耳朵”,而不是通过互联网),我想知道…我一直认为设备驱动程序在操作系统级别上运行,因此必须以相同的语言编写作为操作系统(因此大多是CI假设) 问题 我通常会对此假设有误吗?(看起来是这样) OS中如何使用“外来”语言的驱动程序? 无论如何(从编程语言的角度)对设备驱动程序有什么要求? 谢谢阅读 问题答案: 有两种方法

  • 问题内容: 我正在尝试构建一个android应用程序,此应用程序的主要功能之一是使其能够在手机启动时自动启动活动,我在手机上看到一些应用程序已经执行了此操作,因此任何帮助都将非常有用。我可以至少通过sdk对此进行更好的研究,谢谢! 问题答案: 您需要像这样实现BroadCastreceiver: 在清单中添加以下内容: 添加权限:

  • 我是postgres新手,但我正在尝试调用postgres 11中的过程(新的“过程”不是“函数”),以spring SimpleJDBCall(使用Postgresql-42.2.5 jdbc驱动程序)的形式从java调用。然而,当我执行该过程时,我遇到以下异常: (?)}]; BadSqlGrammarException: CallableStatementCallback;坏SQL语法[{调

  • 问题内容: 我想在Java中使用池化连接(因为每个线程创建一个连接非常昂贵),所以我正在使用该对象。我正在跨线程保留我的数据源。因此,我在整个应用程序中仅使用一个数据源,如下所示: 现在,我已经创建了数据源,然后在每个单独的线程中执行以下操作: 我猜我很困惑, 这真的 是在 获取池连接吗? 这个线程安全吗?我注意到PooledConnection具有诸如notify()和wait()之类的方法…这