[英]Running Java Jar file on Mac OS X
我有一個在Windows下運行良好的Java應用程序,我在構建項目后轉到命令行,執行命令
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都應該是可移植的?
謝謝
嘿那里,我已經看到了這之前看到這里一個解釋
摘要
sun。*包不是受支持的公共界面的一部分。 直接調用sun。*包的Java程序不能保證在所有兼容Java的平台上運行。 實際上,即使在同一平台上的未來版本中,也不能保證這樣的程序能夠工作。
顯然你使用的是com.sun.security.auth.module.NTSystem
,這是一個僅在基於Win NT的系統上可用的內部API。
因為無論底層操作系統是什么,java都應該是可移植的
只要您堅持使用java.*
和javax.*
包,就是這樣。
com.sun.*
軟件包包含內部API,它們在非Sun VM上不可用,其中許多是特定於平台的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.