コマンドライン(javacまたはapt)のクラスパスにjarを含める


137

このプログラムを実行しようとしています。私は、aptを実行するために必要なすべてのWebサービスをセットアップすると思います。(javacを使用していますが、同じ問題が発生しています)。私が得ているのはコンパイルエラーだと思います。(下部に表示)。

私がする必要があるのは、このjarをクラスパスに含めることだと思います:jsr181-api.jar (source)。これを行う簡単な一時的な方法はありますか?これをbash_rcファイルに追加したくありません(これは永久に存在します)。また、マニフェストテキストファイルを使用してそれを行う方法があることも知っていますが、それは複雑に思われたため、まだ調べていません。私は単に次のようなことをすることができますか?

javac HelloImp <listOfJars>

または

ant HelloImp <listOfJars>

コード:

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 + "!";
   }
}

コンパイルエラー:

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

更新:まとめましたが、まだ十分に機能していません。整理整頓するために、新しい質問を作成しました。


補足として、一部のjarはコンパイルjavac時(つまりjava)にのみ必要で、実行時(つまり)には必要ありません。たとえば、lombokjar。
TruthAdjuster

回答:


170

以下を試してください:

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

デフォルトのクラスパス(CLASSPATH環境変数がない場合)は現在のディレクトリなので、再定義する場合は、現在のディレクトリ(。)をクラスパスに追加していることを確認してください。



@ CoolAJ86リンクが機能しなくなったようです
Janis Peisenieks 2013年

30
私が見つけた最良の方法はを使用することjava -cp *:. HelloWorldです。そうすれば、クラスパスのすべてのjarが常に含まれます。
NN

31

Windowsの場合:

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

main関数を含むクラスが、含まれているjarのいずれかにあることを確認してください


20

Windowsユーザーの場合、jarはで区切る必要が;あり:ます。

例えば: javac -cp external_libs\lib1.jar;other\lib2.jar;


14

-cpまたは-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.  

(クラスパスのエントリを区切るために使用されるセパレータはOSによって異なります。私のWindowsマシンでは;* nixでは通常:です。)


3

使用:

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

動作しますが、別のエラーが発生します。新しい質問を参照してください


2

javac HelloWorld.java -classpath ./javax.jar、javaxが現在のフォルダーにあり、コンパイルターゲットが「HelloWorld.java」であると想定し、メインメソッドなしでコンパイルできる

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.