簡體   English   中英

jar中的AWS開發工具包NoClassDefFoundError用作smartfox的擴展

[英]AWS SDK NoClassDefFoundError in jar used as an extension of smartfox

我將一個項目導出到一個在SmartFox中用作服務器擴展的jar中,我的項目使用Amazon AWS開發工具包將一些文件上傳到雲中。 問題是,當我運行SmartFox時,它將引發此異常:

Exception in thread "Thread-22" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials at...
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentials
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

AWSCredentials類位於類路徑中,當我下載SDK文件時,我注意到存在一個可能包含AWS可能需要的jar的“第三方”文件夾,我不確定是否必須將它們添加到類路徑中,因此我做到了,但是什么都沒有改變..我的項目還是一個常規的Java項目,而不是Web項目,這可能是問題嗎? 如果那樣的話,我就搞砸了,因為不允許我更改項目類型。

答案很簡單,SmartFox有一個/SmartFoxServer_2X/SFS2X/extensions/__ lib __目錄,您應該在其中放置擴展jar可能需要的所有jar。

我將所有“第三方”罐子和SDK罐子本身粘貼到此目錄中,並且幾乎可以正常工作。 之后,我面臨的問題是同一個庫(apache中的http-client)的兩個jar之間不兼容,其中一個駐留在__ lib __ ,另一個駐留在/SmartFoxServer_2X/SFS2X/lib ,其中包含SmartFox使用的所有jar 。

我認為問題在於SmartFox類加載器正在從/SmartFoxServer_2X/SFS2X/lib的jar加載http-client .class文件,其版本比我從Amazon第三方庫粘貼的版本/SmartFoxServer_2X/SFS2X/lib舊,但沒有有AWS需要的幾種方法。 無論如何,我將SmartFox更新到最新版本,並且達到了目的。 當然,我也可以將__ lib __文件夾中的jar粘貼到lib以具有相同的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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