Java 为什么加载ApacheDerby驱动程序会挂起在MacOSX上加载本机JMX库?还是禁用JMX?

Java 为什么加载ApacheDerby驱动程序会挂起在MacOSX上加载本机JMX库?还是禁用JMX?,java,macos,eclipse-rcp,derby,Java,Macos,Eclipse Rcp,Derby,我正在从EclipseRCP应用程序加载ApacheDerby。通过以下方式加载/初始化驾驶员时: private static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; //$NON-NLS-1$ : Class.forName(DRIVER).newInstance(); 问题是,这个挂起了。在MacOSX小牛上运行。下面是通过jstack的堆栈跟踪: "Thread-8" daemon prio=6 tid

我正在从EclipseRCP应用程序加载ApacheDerby。通过以下方式加载/初始化驾驶员时:

private static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; //$NON-NLS-1$
:
Class.forName(DRIVER).newInstance();
问题是,这个挂起了。在MacOSX小牛上运行。下面是通过jstack的堆栈跟踪:

"Thread-8" daemon prio=6 tid=7ffc21011800 nid=0x118c57000 runnable [118c52000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1833)
    - locked <7e96254c0> (a java.util.Vector)
    - locked <7e96254e0> (a java.util.Vector)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1730)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    - locked <7e96236e8> (a java.lang.Runtime)
    at java.lang.System.loadLibrary(System.java:1044)
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.loadLibraries(Toolkit.java:1605)
    at java.awt.Toolkit.<clinit>(Toolkit.java:1627)
    at sun.awt.AppContext$2.run(AppContext.java:240)
    at sun.awt.AppContext$2.run(AppContext.java:226)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.AppContext.initMainAppContext(AppContext.java:226)
    at sun.awt.AppContext.access$200(AppContext.java:112)
    at sun.awt.AppContext$3.run(AppContext.java:306)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.AppContext.getAppContext(AppContext.java:287)
    at com.sun.jmx.trace.Trace.out(Trace.java:180)
    - locked <7fd22abf8> (a java.lang.Class for com.sun.jmx.trace.Trace)
    at com.sun.jmx.trace.Trace.isSelected(Trace.java:88)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isTraceOn(DefaultMBeanServerInterceptor.java:1830)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:929)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:916)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
    at com.sun.jmx.mbeanserver.JmxMBeanServer$2.run(JmxMBeanServer.java:1195)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.initialize(JmxMBeanServer.java:1193)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.<init>(JmxMBeanServer.java:225)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.<init>(JmxMBeanServer.java:170)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.newMBeanServer(JmxMBeanServer.java:1401)
    at javax.management.MBeanServerBuilder.newMBeanServer(MBeanServerBuilder.java:93)
    at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:311)
    - locked <7e6ee6228> (a javax.management.MBeanServerBuilder)
    at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:214)
    at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:175)
    at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
    at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
    - locked <7fd19a478> (a java.lang.Class for java.lang.management.ManagementFactory)
    at org.apache.derby.impl.services.jmx.JMXManagementService$1.run(Unknown Source)
    at org.apache.derby.impl.services.jmx.JMXManagementService$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.jmx.JMXManagementService.findServer(Unknown Source)
    - locked <7e6ee0378> (a org.apache.derby.impl.services.jmx.JMXManagementService)
    at org.apache.derby.impl.services.jmx.JMXManagementService.boot(Unknown Source)
    - locked <7e6ee0378> (a org.apache.derby.impl.services.jmx.JMXManagementService)
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
    at org.apache.derby.iapi.services.monitor.Monitor.startSystemModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.runWithState(Unknown Source)
    at org.apache.derby.impl.services.monitor.FileMonitor.<init>(Unknown Source)
    at org.apache.derby.iapi.services.monitor.Monitor.startMonitor(Unknown Source)
    at org.apache.derby.iapi.jdbc.JDBCBoot.boot(Unknown Source)
    at org.apache.derby.jdbc.EmbeddedDriver.boot(Unknown Source)
    at org.apache.derby.jdbc.EmbeddedDriver.<clinit>(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:171
    :
显然,它试图为Derby的JMX服务器加载一些本机库需求。我还没有找到关于这个问题的任何信息。有人见过这个或者知道怎么修吗

或者,我很乐意禁用Derby JMX服务器,但不确定如何做到这一点。他们提供的信息相当神秘,提供了有关如何授予权限的策略文件详细信息


假设您的问题是:如何为嵌入式Derby应用程序指定Java security manager策略文件,您可能会发现此链接很有用: