Я пытаюсь создать приложение клиент / сервер Java RMI.Я сталкиваюсь с проблемами при запуске серверной части моего приложения, так как оно продолжает работать в ClassNotFoundException во время вызова метода Registry.bind (), когда я пытаюсь запустить серверную часть приложения.app.
Я начал с простого урока здесь: http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html. После выполнения этих инструкций он изначально выдавал исключение ClassNotFoundException с жалобой на то, что не может найти "example.hello.Hello".Я смог решить это, запустив каталог rmiregistry FROM destDir в учебном пособии, поскольку rmiregistry, по-видимому, использует свой начальный начальный каталог как часть своего пути к классам.
Я запустил свой каталогдругое тестовое приложение после этого, и я был в порядке, пока я не начал использовать сторонние jar-файлы в своем классе сервера.Теперь Registry.bind () генерирует исключение ClassNotFoundException, если мой класс сервера ссылается на что-либо в любом jar-файле, поскольку приложение rmiregistry не знает об этих jar-файлах.
Насколько я могу судить, rmiregistry не принимает никакихсвоего рода аргумент при запуске classpath, поэтому мне интересно, как я могу сказать, какой classpath я хочу, чтобы он подтвердил.В соответствии с руководством здесь: http://docs.oracle.com/javase/tutorial/rmi/running.html, "вы должны убедиться, что оболочка или окно, в котором вы будете запускать rmiregistry, либо имеют no переменную среды CLASSPATH, либо имеютПеременная среды CLASSPATH, которая не включает путь к каким-либо классам, которые вы хотите загрузить на клиенты ваших удаленных объектов. "Это звучит как противоположность того, что мне нужно ... или я читаю это неправильно?Кто-нибудь имел какой-либо успех при запуске клиента / сервера RMI, который использует сторонние jar-файлы (commons-io, commons-logging и rmiio, в моем случае)?
Это, кстати, на Windows.
Обновление Я нашел способ обойти это.Смотрите мой ответ ниже.