在Mac OS X上运行Java Jar文件
我有一个Java应用程序,它在windows下运行得很好,我在构建项目后进入命令行,执行命令在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 -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下可用的库。