我的 Java 应用程序有问题。有时,当我在 Ubuntu 服务器上运行我的应用程序时,会发生 ClassNotFoundException。我说有时是因为错误随机出现:有时在很长一段时间后(重新启动应用程序修复了错误),有时在第一次使用相关类时(并重建应用程序修复了错误)。
请注意,导致错误的类并不总是相同。另请注意,我不使用 Class.forName() 或 Classloader.loadClass() 或 ClassLoader.findSystemClass()。
我通过以下命令运行我的应用程序:java -jar 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 version "1.7.0_15" OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04.1) OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
谢谢你的帮助!