Я думаю, вы должны указать c:\MyApp\build\classes
в classpath, а НЕ ..\..\..\MyApp
вещь, которую я понимаю, это базовый каталог вашего проекта.
По крайней мере ... с этим ваш Java будет иметь доступ к классам вашего проекта.
РЕДАКТИРОВАТЬ: пример применения без RMIRegistry
Если вы обычно запускаете свое приложение (на стороне сервера), вы можете опубликовать свой RMI-объект без инструмента rmiregisty. Он просто создает собственный реестр, резервируя и прослушивая на выбранном вами порту.
Это рабочий пример из приложения, которое я сделал.
Клиентское приложение должно будет иметь только интерфейс объекта в своем пути к классам (и, конечно, все интерфейсы и классы, на которые ссылаются!).
BatchServer
- это RMI-объект, реализующий интерфейс RMI (BatchService
) и не расширяющий ничего, в частности.
public static void publishAndRun(int port, String name, BatchServer server) throws RemoteException, AlreadyBoundException, NotBoundException
{
Registry registry = LocateRegistry.createRegistry(port);
GPRSService stub = (BatchService) UnicastRemoteObject.exportObject(server, 0);
try
{
registry.bind(name, stub);
try
{
server.run();
}
finally
{
registry.unbind(name);
}
}
finally
{
UnicastRemoteObject.unexportObject(server, true);
}
}
Вашему клиентскому приложению придется искать ВАШ реестр на компьютере: порт и запрашивать объект name
:
Registry registry = LocateRegistry.getRegistry(server, port);
BatchService gprs = (BatchService) registry.lookup(name);