Y compris les jars dans classpath sur la ligne de commande (javac ou apt)


Essayer d'exécuter ce programme. Je pense que pour configurer tous les services Web, je dois exécuter apt. (Bien qu'en utilisant javac, j'ai le même problème). Je pense que ce que je reçois, ce sont des erreurs de compilation. (Ci-bas).

Je pense que ce que je dois faire est d'inclure ce pot dans mon chemin de classe: jsr181-api.jar (source). Existe-t-il un moyen temporaire simple de le faire (sur solaris)? Je ne veux pas l'ajouter à mon fichier bash_rc (il est là pour toujours). Je sais aussi qu'il y est une certaine façon pour le faire en utilisant un fichier texte manifeste, mais cela semblait compliqué, donc je ne l'ai pas encore examiné. Puis-je simplement faire quelque chose comme:

javac HelloImp <listOfJars>

Ou

ant HelloImp <listOfJars>

Code:

package server;

import javax.jws.WebService;

@WebService
public class HelloImpl {

  /**
   * @param name
   * @return Say hello to the person.
   */
   public String sayHello(String name) {
     return "Hello, " + name + "!";
   }
}

les erreurs de Compilation:

HelloImpl.java:3: package javax.jws does not exist
import javax.jws.WebService;
                 ^
HelloImpl.java:5: cannot find symbol
symbol: class WebService
@WebService
 ^
2 errors

Mise à jour: Cool qui est enveloppé mais il ne fonctionne toujours pas tout à fait. J'ai créé une nouvelle question pour garder les choses bien et organisées:

Author: Community, 2010-01-19

6 answers

Essayez ce qui suit:

java -cp jar1:jar2:jar3:dir1:. HelloWorld

Le classpath par défaut (sauf s'il existe une variable d'environnement CLASSPATH) est le répertoire courant, donc si vous le redéfinissez, assurez-vous d'ajouter le répertoire courant (.) au chemin de classe comme je l'ai fait.

 143
Author: Kevin, 2010-01-19 19:14:08

Dans Windows:

java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method

Assurez-vous que la classe avec la fonction principale est dans l'un des pots inclus

 30
Author: Ben, 2010-01-19 19:17:24

Utilisez le commutateur -cp ou -classpath.

$ java -help  
Usage: java [-options] class [args...]  
           (to execute a class)  
   or  java [-options] -jar jarfile [args...]  
           (to execute a jar file)  

where options include:  
...  
    -cp <class search path of directories and zip/jar files>  
    -classpath <class search path of directories and zip/jar files>  
                  A ; separated list of directories, JAR archives,  
                  and ZIP archives to search for class files.  

(Notez que le séparateur utilisé pour séparer les entrées sur le chemin de classe diffère entre les systèmes d'exploitation, sur ma machine Windows c'est ;, dans *nix c'est généralement :.)

 9
Author: matt b, 2010-01-19 19:15:13

Remarque pour les utilisateurs Windows, les fichiers jar doivent être séparés par ; et non par :.

Par exemple: javac -cp external_libs\lib1.jar;other\lib2.jar;

 8
Author: user2317013, 2017-04-27 19:34:22

En utilisant:

apt HelloImpl.java -classpath /sac/tools/thirdparty/jaxws-ri/jaxws-ri-2.1.4/lib/jsr181-api.jar:.

Fonctionne mais cela me donne une autre erreur, voir nouvelle question

 3
Author: sixtyfootersdude, 2017-05-23 12:26:33

Javac HelloWorld.java-classpath ./ javax.jar, en supposant que javax est dans le dossier actuel et que la cible de compilation est "HelloWorld.java", et vous pouvez compiler sans méthode principale

 2
Author: Stoica Mircea, 2017-01-15 11:05:54