在Mac OS X上运行Java Jar文件

在Mac OS X上运行Java Jar文件,java,macos,jar,Java,Macos,Jar,我有一个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.

我有一个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)
线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError中出现异常:com/sun/security/auth/module/NTSystem 在androidchat.AndroidChatView上。(AndroidChatView.java:48) 在androidchat.AndroidChatApp.startup上(AndroidChatApp.java:19) 位于org.jdesktop.application.application$1.run(application.java:171) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) 在java.awt.EventQueue.access$000(EventQueue.java:86) 在java.awt.EventQueue$1.run处(EventQueue.java:639) 在java.awt.EventQueue$1.run处(EventQueue.java:637) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:648) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:211) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:201) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122) 原因:java.lang.ClassNotFoundException:com.sun.security.auth.module.NTSystem 位于java.net.URLClassLoader$1.run(URLClassLoader.java:202) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:190) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:307) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:248) 无论底层操作系统是什么,java都应该是可移植的,为什么会发生这种情况

谢谢

很显然,您正在使用一种仅在基于Win NT的系统上可用的内部API

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

只要您坚持使用
java.*
javax.*
软件包,这是正确的。

com.sun.
软件包包含内部API,它们在非sun虚拟机上不可用,并且其中许多是特定于平台的。

嘿,我以前看过这些,请参阅以获取解释

摘要

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

谢谢你,那很有帮助。。我认为我的问题是选择在netbeans中启动Java桌面应用程序,该应用程序导入了某些仅在windows下可用的库。