J'essaie de construire un projet Web Java sur NetBeans 6.8, mais le message d'erreur suivant s'affiche:
Le module n'a pas été déployé.
Il pointe vers mon fichier build-impl.xml
, ligne 577:
<nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/>
Le journal des erreurs de GlassFish v3 indique:
SEVERE: Exception in command execution : Java.lang.IllegalArgumentException: URI has an authority component
Java.lang.IllegalArgumentException: URI has an authority component
at Java.io.File.<init>(File.Java:368)`..., etc.
Qu'est-ce que "L'URI a un composant d'autorité" signifie?
La solution était simplement que l'URI était mal formé (parce que l'emplacement de mon projet était sur un chemin "\\" UNC). Ce problème a été résolu lorsque j'ai utilisé un espace de travail local.
Une autorité est une partie d'un URI. Votre erreur suggère qu'il n'en attendait pas. La section autorité est indiquée ci-dessous, il s'agit de ce que l'on appelle la partie site Web de l'URL.
À partir de RFC3986 sur URI :
Voici un exemple d'URI et de ses composants:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
| _____________________|__
/ \ / \
urn:example:animal:ferret:nose
Il existe donc deux formats, l’un avec une autorité et l’autre non. En ce qui concerne les barres obliques:
"En l'absence d'autorité, le chemin ne peut pas commencer par deux barres obliques
personnages ("//")."
Source: http://www.rfc-base.org/txt/rfc-3986.txt (la recherche du texte "l'autorité n'est pas présente, le chemin ne peut pas commencer par deux barres obliques")
Basculez sur l'onglet de sortie GlassFish, cela vous donnera de meilleures informations. Netbeans vous donne cette erreur générique, mais Glassfish vous donne les détails. Quand je reçois cela, c'est généralement une faute de frappe dans l'un de mes fichiers JSP ou XML ...
J'ai eu le même problème (NetBeans 6.9.1) et le correctif est si simple :)
J'ai réalisé que NetBeans n'avait pas créé de dossier META-INF. Par conséquent, aucun context.xml
n'a été trouvé. Je crée donc le dossier META-INF sous le dossier principal du projet et crée le fichier context.xml
avec le contenu suivant.
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/home"/>
Et ça court :)
J'ai découvert que l'URL de l'application était en conflit avec un module de Sun GlassFish . Ainsi, dans le fichier Sun-web.xml
, j'ai renommé <context-root>/servlets-samples </ context-root>.
Cela fonctionne maintenant.
J'ai également rencontré le même problème lorsque je travaillais sur le développement du site de commerce électronique Affable Bean. J'ai reçu une erreur:
Le module n'a pas été déployé.
J'ai vérifié le fichier Sun-resources.xml
et trouvé les instructions suivantes qui ont entraîné l'erreur.
<resources>
<jdbc-resource enabled="true"
jndi-name="jdbc/affablebean"
object-type="user"
pool-name="AffableBeanPool">
</jdbc-resource>
<jdbc-connection-pool allow-non-component-callers="false"
associate-with-thread="false"
connection-creation-retry-attempts="0"
connection-creation-retry-interval-in-seconds="10"
connection-leak-reclaim="false"
connection-leak-timeout-in-seconds="0"
connection-validation-method="auto-commit"
datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
fail-all-connections="false"
idle-timeout-in-seconds="300"
is-connection-validation-required="false"
is-isolation-level-guaranteed="true"
lazy-connection-association="false"
lazy-connection-enlistment="false"
match-connections="false"
max-connection-usage-count="0"
max-pool-size="32"
max-wait-time-in-millis="60000"
name="AffableBeanPool"
non-transactional-connections="false"
pool-resize-quantity="2"
res-type="javax.sql.ConnectionPoolDataSource"
statement-timeout-in-seconds="-1"
steady-pool-size="8"
validate-atmost-once-period-in-seconds="0"
wrap-jdbc-objects="false">
<description>Connects to the affablebean database</description>
<property name="URL" value="jdbc:mysql://localhost:3306/affablebean"/>
<property name="User" value="root"/>
<property name="Password" value="nbuser"/>
</jdbc-connection-pool>
</resources>
Ensuite, j'ai changé les énoncés suivants, qui sont simples et fonctionnent. J'ai pu exécuter le fichier avec succès.
<resources>
<jdbc-resource enabled="true" jndi-name="jdbc/affablebean" object-type="user" pool-name="AffablebeanPool">
<description/>
</jdbc-resource>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="AffablebeanPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.ConnectionPoolDataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="URL" value="jdbc:mysql://localhost:3306/AffableBean"/>
<property name="User" value="root"/>
<property name="Password" value="nbuser"/>
</jdbc-connection-pool>
</resources>
Après avoir essayé un projet squelette appelé "jsf-blank", qui n'a pas démontré ce problème avec les fichiers xhtml; J'ai conclu qu'il y avait un problème inconnu dans mon projet. Ma solution n’était peut-être pas trop élégante, mais elle permettait de gagner du temps. J'ai sauvegardé le code et d'autres fichiers que j'avais déjà développés, supprimé le projet et recommencé à recréer le projet. Jusqu'ici, j'ai rajouté la plupart des fichiers et ça a l'air bien.