java - 如果当前线程有权限退出Java虚拟机

标签 java multithreading securitymanager

我正在尝试 SecurityManager 类。我想检查当前线程是否有退出Java虚拟机的权限。下面是我想出的代码。

SecurityManager appsm = System.getSecurityManager();
System.out.println("something");
appsm.checkExit(0);

我原以为 SecurityManager.checkExit 会抛出一个 SecurityException。但是,IDE 反而输出 NullPointerException

Exception in thread "main" java.lang.NullPointerException
    at jtotheplatformenvironment.JTOThePlatformEnvironment.main(JTOThePlatformEnvironment.java:40)
C:\Users\Justin\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

为什么会这样?

最佳答案

您需要使用一个额外的参数来执行 Java 应用程序:

-Djava.security.manager

因此 JVM 将使用内置的默认安全管理器 (source) 启动,否则不会创建安全管理器,这就是您获得 NPE 的原因。

关于java - 如果当前线程有权限退出Java虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713921/

相关文章:

python - Python-如何与另一个脚本共享实时数据

multithreading - QThread 中的 Worker

java - 在 SecurityManager 下创建对象时出现 NoClassDefFoundError

java - Final boolean [] 与 Runnable 内的 Final boolean

java - parent 的 onAreaTouched 会触发 child 的吗?

java - JPA 一对一关系查询

vb.net - VB.NET 中的 Me.Invoke 实际上并不是 "Invoke"- 线程在 Invoke 语句上停滞

java - 如何搭建沙箱环境

java - 如何配置 Java SecurityManager 以允许从给定文件读取所有属性

java - 无法在JPA中进行子查询