web-dev-qa-db-fra.com

Inclusion de jars dans classpath sur la ligne de commande (javac ou apt)

en essayant d'exécuter ce programme. Je pense que pour configurer tous les services Web dont j'ai besoin pour exécuter apt. (Bien que j'utilise javac, j'ai le même problème). Je pense que ce que je reçois, ce sont des erreurs de compilation. (Montré en bas).

Je pense que ce que je dois faire est d’inclure ce fichier jar dans mon chemin de classe: jsr181-api.jar (source) . Existe-t-il un moyen simple et temporaire 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 existe un moyen de le faire en utilisant un fichier texte manifeste, mais comme cela semblait compliqué, je ne l'ai pas encore examiné. Puis-je 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 + "!";
   }
}

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, c'est emballé mais ça ne fonctionne toujours pas. J'ai créé un nouvelle question pour garder les choses agréables et organisées:

128
sixtyfootersdude

Essayez ce qui suit:

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

Le chemin d'accès aux classes par défaut (sauf s'il existe une variable d'environnement CLASSPATH) est le répertoire actuel. Par conséquent, si vous le redéfinissez, assurez-vous que vous ajoutez le répertoire actuel (.) Au chemin d'accès aux classes, comme je l'ai déjà fait.

151
Kevin

Dans les fenêtres:

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

assurez-vous que la classe avec la fonction principale est dans l'un des bocaux inclus

31
Ben

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

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

13
luisv

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 d'un système d'exploitation à l'autre. Sur mon ordinateur Windows, il s'agit de ;, dans * nix, il s'agit généralement de :.)

11
matt b

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
sixtyfootersdude

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

2
Stoica Mircea