Pourquoi RMI registre est ignorant la java.rmi.serveur.le code de la propriété

Je suis en cours d'exécution un exemple Hello World pour java RMI

1) je lance le registre dans un dossier vide

motta@motta-laptop ~/tmp $ rmiregistry

2) je démarre le serveur HTTP pour récupérer les classes au moment de l'exécution. Le dossier de téléchargement contient l'interface à distance pour le client-serveur

motta@motta-laptop ~/download $ java NanoHTTPD 8080

3) je démarre le serveur en passant la java.rmi.serveur.le code de la propriété comme le suggère le java RMI tutoriel

motta@motta-laptop ~/server $ java -Djava.rmi.server.codebase="http://localhost:8080" WarehouseServer

Le registre RMI est de ne pas communiquer avec le serveur HTTP et est en train de lancer une exception (voir les détails après la question).
Mais si je ne les suivants

1) Démarrer le registre rmi de java.rmi.serveur.le code de la propriété

motta@motta-laptop ~/tmp $ rmiregistry -J-Djava.rmi.server.codebase="http://localhost:8080/"

2) Démarrer le serveur HTTP comme avant

3) Démarrer le serveur, sans aucune option

motta@motta-laptop ~/server $ java WarehouseServer

il fonctionne, mais pourquoi? Il semble qu'avec la première procédure du RMI registre est ignorant la java.rmi.serveur.le code de la propriété

Merci

=================================

Je suis en cours d'exécution

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

L'exception du RMI registre

Constructing server implementation...
Binding server implementation to registry...
Exception in thread "main" java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
java.lang.ClassNotFoundException: Warehouse
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at WarehouseServer.main(WarehouseServer.java:14)
Très étrange. Pouvez-vous essayer de recommencer sans les guillemets autour de la base de code URL?
Salut EJP, j'ai essayé sans les guillemets et le comportement est le même
Je travaille toujours sur le qui et Il ressemble vraiment à un bug. Le ci-dessus mentionné problème se produit dans mon Linux Mint VM, alors que si je lance le exactement le même code (et de configuration) sur ma machine Windows, tout va bien.
Je confirme que sous Windows je n'ai pas besoin de passer le code de base à l'argument de la rmiregistry, alors que sous Linux Mint, j'ai besoin d'elle j'ai tout enregistré et l'installation d'un dépôt avec l'exemple et les instructions à exécuter github.com/mottalrd/RMITutorial (Entrepôt v1 ensemble de projets)
Est-il possible que sous Linux, vous disposez d'une variable d'environnement CLASSPATH qui est définie lorsque vous démarrez la base de Registre et des points à votre code serveur?

OriginalL'auteur mottalrd | 2013-05-27