【问题标题】:Running Java Jar file on Mac OS X在 Mac OS X 上运行 Java Jar 文件
【发布时间】:2011-07-31 12:52:42
【问题描述】:

我有一个Java应用程序在windows下完美运行,我在构建项目后进入命令行,执行命令

java -jar FileName.jar 

当我将项目文件复制到我的 Mac 机器并执行相同的命令时,出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/security/auth/module/NTSystem
    at androidchat.AndroidChatView.<init>(AndroidChatView.java:48)
    at androidchat.AndroidChatApp.startup(AndroidChatApp.java:19)
    at org.jdesktop.application.Application$1.run(Application.java:171)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678)
    at java.awt.EventQueue.access$000(EventQueue.java:86)
    at java.awt.EventQueue$1.run(EventQueue.java:639)
    at java.awt.EventQueue$1.run(EventQueue.java:637)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:648)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: com.sun.security.auth.module.NTSystem
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

为什么会发生这种情况,因为无论底层操作系统是什么,java 都应该是可移植的?

谢谢

【问题讨论】:

    标签: java macos jar


    【解决方案1】:

    显然您正在使用com.sun.security.auth.module.NTSystem,这是一个仅在基于 Win NT 的系统上可用的内部 API。

    因为 java 应该是可移植的 no 不管底层操作系统是什么

    只要您坚持使用 java.*javax.* 软件包,这就是事实。
    com.sun.* 软件包包含内部 API,它们在非 Sun VM 上不可用,其中许多是特定于平台的.

    【讨论】:

    • 谢谢你,这很有帮助.. 我认为我的问题是选择在 netbeans 中启动 Java 桌面应用程序,该应用程序导入了某些仅在 Windows 下可用的库。
    【解决方案2】:

    嘿,我以前看过这个,请参阅here 以获得解释

    总结

    sun.* 包不是受支持的公共接口的一部分。 不能保证直接调用 sun.* 包的 Java 程序可以在所有 Java 兼容平台上运行。事实上,即使在同一平台上的未来版本中,也不能保证这样的程序可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      相关资源
      最近更新 更多