Я пытаюсь настроить приложение RMI, которое когда-то работало, но теперь я получаю странное поведение. Когда я запускаю его без Окурка я получаю java.lang.ClassNotFoundException: HelloInterface Затем я добавляю новый файл (Hello_Stub) в каталог (используя РЦМП), , а затем я получаю java.lang.ClassNotFoundException: Hello_Stub* Добавление * файл вызывает java.lang.ClassNotFoundException на сервере RMI
WTF ?? Он не жаловался на недостаток Hello_Stub, когда он отсутствовал; но когда я добавляю этот файл, он начинает жаловаться, что он НЕ существует. А?
Что находится внизу транскрипта с терминала. Сначала вы видите одну ошибку; затем я перечисляю файлы в текущем каталоге; затем я создаю файл Stub и покажу вам это; то вы увидите сообщение об ошибке, где он жалуется, что файл просто добавил отсутствует:
[email protected]:/kearnsgroup/www/RMItest/classes> java HelloServer
initializing Hello class: Hello, world!
Hello Server failed: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: HelloInterface
[email protected]:/kearnsgroup/www/RMItest/classes> ll
total 32
-rw------- 1 sjudd sjudd 765 Oct 25 19:52 Hello.class
-rw------- 1 sjudd sjudd 967 Oct 25 19:52 HelloClient.class
-rw-r----- 1 sjudd sjudd 614 Oct 25 19:42 HelloClient.java
-rw------- 1 sjudd sjudd 222 Oct 25 19:52 HelloInterface.class
-rw-r----- 1 sjudd sjudd 360 Oct 25 09:08 HelloInterface.java
-rw-r----- 1 sjudd sjudd 847 Oct 25 09:56 Hello.java
-rw------- 1 sjudd sjudd 916 Oct 25 19:52 HelloServer.class
-rw-r----- 1 sjudd sjudd 439 Oct 25 09:14 HelloServer.java
[email protected]:/kearnsgroup/www/RMItest/classes> rmic Hello
[email protected]:/kearnsgroup/www/RMItest/classes> ll
total 36
-rw------- 1 sjudd sjudd 765 Oct 25 19:52 Hello.class
-rw------- 1 sjudd sjudd 967 Oct 25 19:52 HelloClient.class
-rw-r----- 1 sjudd sjudd 614 Oct 25 19:42 HelloClient.java
-rw------- 1 sjudd sjudd 222 Oct 25 19:52 HelloInterface.class
-rw-r----- 1 sjudd sjudd 360 Oct 25 09:08 HelloInterface.java
-rw-r----- 1 sjudd sjudd 847 Oct 25 09:56 Hello.java
-rw------- 1 sjudd sjudd 916 Oct 25 19:52 HelloServer.class
-rw-r----- 1 sjudd sjudd 439 Oct 25 09:14 HelloServer.java
-rw------- 1 sjudd sjudd 1635 Oct 25 20:34 Hello_Stub.class
[email protected]:/kearnsgroup/www/RMItest/classes> java HelloServer
initializing Hello class: Hello, world!
Hello Server failed: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Hello_Stub
Обратите внимание, что то, что не удается здесь является сервер RMI, а не клиент.
Этот код отлично работает на одной машине (Mac), но при копировании на другой (Linux) он вызывает эту удивительную ошибку.
Я так потрясен этой странностью, я не знаю, как подойти к ней. Может ли это иметь какое-то отношение к шагу отмены? или с переменными среды? Возможно, CLASSPATH? Я не вижу, что искать. Любые дикие теории?
Есть ли в Linux-машине ваши классы в classpath? –