簡體   English   中英

在Mac OS X上運行Java Jar文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM