Tomcat – RMI – erreur d’URL d’accès aux classes
En utilisant du RMI sous Tomcat, il est possible de rencontrer l’exception suivante :
RemoteException : RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.net.MalformedURLException: no protocol: Files/eclipse-3.0.1/workspace/MyProject/WEB-INF/classes/
Ou bien :
RemoteException : RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.net.MalformedURLException: no protocol: Files/Apache
Ces erreurs « ne sont » que des des problèmes de classpath. 😉
Cette erreur peut être rencontrée lorsque le chemin où se trouve les classes utilisées pour la communication RMI contient des espaces. Ce cas est assez courant dans un environnement sous MS Windows avec Tomcat ou Eclipse, puisque par défaut ils sont installés dans le répertoire C:\Program Files\
.
Une première solution consiste à installer Tomcat dans un répertoire ne contenant pas d’espace[1].
La seconde solution, consiste à positionner un paramètre sur le serveur RMI (beaucoup plus propre tout de même). Pour cela, il suffit d’ajouter cette option à la JVM :
-Djava.rmi.server.useCodebaseOnly=true
Ce disfonctionnement est connu est référencé :
- Java Forums : whitespace in URL ou URL encoding paths – whats the right behaviour?
- AFS Buzilla #4543
Notes
[1] Si la WebApp est configurée pour être lancée à partir de votre environnement de développement, c’est l’IDE (comme Eclipse) qu’il faut installer dans un répertoire sans espace.
https://blog.lecacheur.com/2005/01/10/tomcat-rmi-erreur-durl-dacces-aux-classes/Java EEEn utilisant du RMI sous Tomcat, il est possible de rencontrer l'exception suivante : Ou bien : Ces erreurs 'ne sont' que des des problèmes de classpath. 😉 Cette erreur peut être rencontrée lorsque le chemin où se trouve les classes utilisées pour la communication RMI contient des espaces. Ce cas est...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
Merci pour ces informations et félicitations pour ce site 🙂
en tentant de se connecter moyennant la classe URL de java le message suivant est affiché :
java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.google.com/search?query=
Merci pour votre aide
Masmoudi,
Je ne vois pas trop le rapport avec l’article. Tu aurais plus de chance d’obtenir une réponse sur un forum de développement Java. 🙂
Néanmoins, je vais t’apporter quelques éléments de réponse. L’erreur que tu rencontres est une erreur HTTP classique. L’erreur HTTP 403 indique que tu n’as pas le droit d’accéder à la page demandée. Dans ton cas, cela m’étonne un peu puisque cette page (de Google) est accessible par tout le monde. A moins qu’elle ne passe pas en POST…
Bon courage !