我有一個Java應用程序的問題。 有時,當我在Ubuntu服務器上運行我的應用程序時,會發生ClassNotFoundException。 我之所以說有時是因爲錯誤是隨機出現的:有時在很長一段時間後(重新啓動應用程序會修復錯誤),有時在第一次使用相關類時(並重建應用程序可修復錯誤)。jar中的ClassNotFoundException
請注意,它並不總是導致錯誤的類。 另請注意,我不使用Class.forName()或Classloader.loadClass()或ClassLoader.findSystemClass()。
我通過命令來運行我的應用程序: Java的罐子的server.jar
所有的類都在JAR文件(我解壓它來檢查)和清單是正確的。
這是錯誤我得到:
java.lang.ClassNotFoundException: com.edioromeh.server.server2server.S2SDroppedItem at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:266) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:622) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369) at com.edioromeh.ub.server.Messenger.run(Messenger.java:44) at java.lang.Thread.run(Thread.java:722)
我的Java版本是: Java版本 「1.7.0_15」 OpenJDK的 運行時環境(IcedTea7 2.3.7)(7u15-2.3.7- 0ubuntu1〜12.04.1) OpenJDK 64位服務器VM(build 23.7-b01,混合模式)
感謝您的幫助!
com.edioromeh.ub.server包中的'Messenger'類在嘗試反序列化對象時正在執行'class.forName()'。這看起來有點像RMI在通過網絡傳遞對象時的工作方式。有沒有一個服務器,你的連接這個密切? –