У меня проблема с приложением Java. Иногда, когда я запускаю свое приложение на сервере Ubuntu, возникает ClassNotFoundException. Я говорил иногда, потому что ошибка появляется случайным образом: иногда через долгое время (и перезапуск приложения исправляет ошибку), иногда в первый раз используется соответствующий класс (и перестраивает приложение, исправляет ошибку).ClassNotFoundException в банке
Обратите внимание, что это не всегда тот же класс, который вызывает ошибку. Также обратите внимание, что я не использую Class.forName() или Classloader.loadClass() или ClassLoader.findSystemClass().
Я бег моего приложения с помощью команды: Java -jar server.jar
Всех классов находятся в файле JAR (я расстегнула его, чтобы проверить) и Manifest является правильным.
Это ошибка, я получаю:
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 версия "1.7.0_15" OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7- 0ubuntu1 ~ 12.04.1) 64-разрядный сервер OpenJDK VM (сборка 23.7-b01, смешанный режим)
Спасибо за помощь!
Класс 'Messenger' из пакета com.edioromeh.ub.server выполняет 'class.forName()', когда он пытается десериализовать объект. Это похоже на то, как RMI работает при передаче объектов по сети. Есть ли сервер, к которому ваше соединение тесно связано? –