запуск RMI-сервера в командной строке и затмение - PullRequest
0 голосов
/ 05 июня 2010

Мне нужно запустить мой RMI-сервер RmiEncodingServer) с помощью командной строки, Мои файлы классов находятся в этой папке:

C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses

в упаковке hw2.rmi.server. База кода находится в этой папке:

C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase

в упаковке hw2.rmi.server.

Я использую командную строку:

java –classpath C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses\ -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase -Djava.security.policy=C:\workspace\distributedhw2\permissions.policy hw2.rmi.server.RmiEncodingServer

но я получаю исключение "класс не найден" следующим образом:

Exception in thread "main" java.lang.NoClassDefFoundError: ûclasspath
Caused by: java.lang.ClassNotFoundException: ûclasspath
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: GÇôclasspath.  Program will exit.

где я ошибся?

также, если вы можете предоставить инструкции о том, как запустить сервер в Eclipse, я добавил следующее в качестве аргумента VM, но я получаю исключение для класса not found для класса, который находится в RmiServerCodeBase:

-Djava.security.policy=C:\workspace\distributedhw2\permissions.policy -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase

спасибо

1 Ответ

1 голос
/ 05 июня 2010

Я обнаружил, что проблема заключалась в том, что я пытался ссылаться на файлы .java в моей кодовой базе, а не на файлы .class , я полагаю, что собственно имя "кодовая база" немного вводит в заблуждение. поэтому, если вы хотите сделать это на своем сервере RMI, вы можете сделать это следующим образом:

String codeBasePath =  "file:/C:/workspace/distributedhw2/"
        + "AgencyServers/RmiEncodingServer/RmiServerClasses/";
        System.setProperty("java.rmi.server.codebase",codeBasePath);

или просто передайте следующее в качестве аргументов VM:

-Djava.security.policy=C:\workspace\distributedhw2\permissions.policy -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses
...