web-dev-qa-db-fra.com

la classe taskdef com.Sun.tools.ws.ant.WsImport est introuvable suite au "didacticiel des services Web Java".

J'ai vu le même problème dans de nombreux endroits et même après une bonne partie de recherche sur Google, je ne pouvais pas le résoudre. Ce que j'essaie de faire (la vue d'ensemble) est de passer par Le tutoriel sur les services Web Java , qui semble en des points désynchronisés,

Spécialement ici , lorsque j'essaie de compiler, je reçois le message suivant:

C:\javaeetutorial5\exemples\jaxws\common\cibles.xml: 26: taskdef classe com.Sun.tools.ws.ant.WsImport introuvable.

J'ai essayé de nombreuses combinaisons différentes de placement de bocaux ou de modification de variables d'environnement, mais sans résultat. Des histoires réussies?

Le message d'erreur de version complète est le suivant:

ÉCHEC DE CONSTRUCTION

C:\javaeetutorial5\examples\jaxws\helloservice\build.xml: 4: L'erreur suivante s'est produite lors de l'exécution de cette ligne:

C:\javaeetutorial5\exemples\jaxws\common\cibles.xml: 26: taskdef Classe requise par la classe com.Sun.tools.ws.ant.WsImport introuvable: org/Apache/tools/ant/DynamicConfigurator

en utilisant le chargeur de classes AntClassLoader [C:\Program Files (x86)\Java\jdk1.6.0_23\lib\tools.jar]

Temps total: 0 secondes

Et le taskdef correspondant :

<taskdef name="wsimport" classname="com.Sun.tools.ws.ant.WsImport">
    <classpath refid="jaxws.classpath"/>
</taskdef>

Jetez également un coup d'œil au répertoire des endossements:

C:\javaeetutorial5\kschneid>cd %Java_HOME%

C:\Program Files (x86)\Java\jdk1.6.0_23>dir lib\endorsed
 Volume in drive C is OSDisk
 Volume Serial Number is AAAA-BBBB

 Directory of C:\Program Files (x86)\Java\jdk1.6.0_23\lib\endorsed

25/02/2011  09:34    <DIR>          .
25/02/2011  09:34    <DIR>          ..
25/02/2011  09:34           105,134 jaxb-api.jar
25/02/2011  09:33            54,476 jaxws-api.jar
               2 File(s)        159,610 bytes
               2 Dir(s)  110,907,056,128 bytes free

C:\Program Files (x86)\Java\jdk1.6.0_23>
14
Dimitrios Mistriotis

Eh bien, apparemment, un lien vers un site Web avec la solution de ce problème est inacceptable, je vais donc coller la réponse ici:

<property name="BUILD_LIBS" location="C:/Projects/Build/Libs/" />

<taskdef name="wsimport" classname="com.Sun.tools.ws.ant.WsImport">
    <classpath>
        <pathelement location="${BUILD_LIBS}/jaxws-ri/lib/jaxws-tools.jar"/>
    </classpath>
</taskdef>

Le problème est dû au fait que jaxws jar ne se trouve pas dans le chemin de classe, voir le nœud pathelement ci-dessus. L'ajout du fichier jar au chemin de classe résout le problème.

12
user63904

La tâche <wsimport> ant n'est pas incluse dans le JDK, même s'il existe un fichier wsimport.exe qui fait exactement la même chose.

Si vous voulez vraiment la tâche ant, vous pouvez télécharger jaxws-ri et utiliser les 23 (!) Jars du dossier lib.

Ou vous pouvez utiliser cette solution de contournement en appelant wsimport.exe :

<target name="generate-client" >
    <exec executable="${Java.home}/../bin/wsimport">
        <arg line="-keep -d build/classes -p ebay.apis -s src -wsdllocation http://localhost:7070/Ebay?wsdl eBaySvc.wsdl"/>
    </exec>
</target>
9
Stroboskop

Vous pouvez résoudre le problème dans Netbeans x.y comme suit:

  1. Allez dans Outils-> Options-> Java-> Ant.
  2. Cliquez sur "Ajouter un fichier JAR/Zip ..." dans la section Classpath
  3. Accédez à "C:\Program Files\NetBeans x.y\entreprise\modules\ext\metro \"
  4. Sélectionnez tous les fichiers.
  5. Cliquez sur OK et essayez à nouveau l'importation/la régénération.

où x.y = 7.1, 7.2, 8.0 etc.

7
Babatunde Adeyemi

Je soutiens pleinement le développement non-IDE, en particulier lorsque j'essaie d'apprendre quelque chose;). Essayez de commencer avec ce fichier de construction simple (utilisez l’emplacement réel de votre installation RI JAX-WS):

<project name="jaxws-tutorial" default="wsimport">

    <property name="jaxws.home" location="D:/jaxws-ri-2_2_1"/>

    <path id="wsimport.classpath">
        <fileset dir="${jaxws.home}/lib" includes="jaxws-tools.jar"/>
    </path>

    <taskdef name="wsimport" classname="com.Sun.tools.ws.ant.WsImport" classpathref="wsimport.classpath"/>

    <target name="wsimport">
        <wsimport>
            <arg value="-version"/>
        </wsimport>
    </target>

</project>

Si vous venez d'exécuter ant, vous devriez voir une sortie comme celle-ci:

wsimport:
 [wsimport] Consider using <depends>/<produces> so that wsimport won't do unnecessary compilation
 [wsimport] JAX-WS RI 2.2.1-b01-

Comme il semble que vous utilisiez Java 6, faites attention à "Running on JDK6" .

3
kschneid

Cela a fonctionné pour moi:

Je télécharge la bibliothèque Java-WS à partir du site officiel Je la mets dans un répertoire extra-lib. Ce répertoire est au même niveau que build.xml. Sur build.xml, je copie depuis jaxws-build.xml la tâche Ant nommée "wsimport-init" et je la modifie comme dans le mode suivant:

...
    <target name="wsimport-init" depends="init">
        <mkdir dir="${build.generated.sources.dir}/jax-ws"/>
        <taskdef name="wsimport" classname="com.Sun.tools.ws.Ant.WsImport">
            <classpath>
                <fileset dir="./extra-lib">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
        </taskdef>
    </target>
...

Référence: http://www.staniscia.net/989-resolve-the-portable-problem-of-netbean-jax-ws-libraries-for-web-service-clients/

2
Akira Yamamoto

J'ai changé le classname="com.Sun.tools.ws.ant.WsImport" en classname="com.Sun.tools.ws.WsImport", ce qui a corrigé ce problème pour moi. 

2
Rahul Khimasia

Pour surmonter cette erreur, nous devons utiliser Outils-> Options, cliquer sur Divers et, dans l'onglet Ant, utiliser Ajouter un fichier JAR/Zip pour localiser et ajouter les bibliothèques webservices-tools.jar et webservices-rt.jar. dans le répertoire

0
Dvir Arad

J'ai trouvé une réponse qui ne me satisfait pas du tout: Netbeans installés qui s'occupe de réunir les choses. Néanmoins, la ligne de commande ne fonctionne pas (cela signifie donc que l'environnement est compartimenté, ce qui est bon). Je peux suivre le tutoriel, mais je crois toujours que tout devrait être fait en ligne de commande (y-avait-il trop d'Unix dans mon régime?)

0
Dimitrios Mistriotis

Mieux encore, vous pouvez utiliser l'outil de ligne de commande wsimport pour générer le jar ou les fichiers. 

http://docs.Oracle.com/javase/6/docs/technotes/tools/share/wsimport.html

générer les fichiers dans le dossier build/classes, vous pouvez ensuite le référencer à partir de là avec ant javac 

0
JohnTheBeloved

Si vous utilisez Eclipse IDE et que vous êtes confronté à ce problème, voici quelque chose qui a fonctionné pour moi. Allez à: Fenêtre> Préférences. Recherchez l'option Ant située à gauche. .

Développez-le et vous trouverez ANT Runtime. Sélectionnez cette option et vérifiez les fichiers JAR inclus dans l'onglet Classpath.

Sélectionnez l'option Ajouter un conteneur externe. Maintenant, allez dans le dossier d'accueil Ant dans votre système. Allez dans le dossier lib et ajoutez tous les fichiers jar/jar manquants.

cela résoudra la dépendance manquante pour ant-build.

J'espère que cela pourra aider!

0
RishikeshD