У меня есть простой сервер RMI, который хранит файлы на карте и возвращает их по запросу. Тип файлов, хранящихся на карте, - это Object. Я сделал это, поэтому мне не нужно будет импортировать библиотеку с другой частью проекта, содержащей определенный файл (есть ли другой способ сделать это?).RMI Удаленное исключение: java.lang.ClassNotFoundException
Должен ли я быть в порядке без импорта, поскольку тип хранится как объект? В то же время с ошибкой я получаю java Finalizer thread crash. Вот стек:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: util.MyClass (no security manager: RMI class loader disabled)
Invalid memory access of location 0x0 rip=0x7fff91016390 <<< this is from crash
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:334)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
Также здесь часть кода от Клиента:
public void uploadProjects(List<MyClass> projects) {
try {
Object obj = projects;
rmiServer.upload(channel, obj); // <<<< exception on this line
} catch (RemoteException ex) {
Logger.getLogger(RMIClient.class.getName()).log(Level.SEVERE, null, ex);
}
}
А вот метод интерфейса:
void upload(String channel, Object projects) throws RemoteException;
Я делаю что-то неправильно там? Должен ли он отлично работать с объектом без необходимости импорта определенного класса? Также я пробовал использовать диспетчер безопасности в прошлом, но это только приводило к большим проблемам и должно было делать AllPermissions для его работы (в другом проекте) ...
Аварийный сбой не всегда, но это должно быть причиной RMI.