在命令行的类路径中包含jar(javac或apt)

six*_*ude 132 java jar

试图运行这个程序.我认为要设置我需要运行apt的所有Web服务.(虽然使用javac我遇到了同样的问题).我认为我得到的是编译错误.(如下图所示).

我想我需要做的是在我的类路径中包含这个jar:jsr181-api.jar (source).有没有一个简单的临时方法(在solaris上)?我不想将它添加到我的bash_rc文件中(它永远存在).我也知道有一些方法可以使用清单文本文件,但这似乎很复杂,所以我还没有调查它.我可以这样做:

javac HelloImp <listOfJars>
Run Code Online (Sandbox Code Playgroud)

要么

ant HelloImp <listOfJars>
Run Code Online (Sandbox Code Playgroud)

码:

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 + "!";
   }
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

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
Run Code Online (Sandbox Code Playgroud)

更新:酷包裹但仍然不能正常工作.我创建了一个新问题,以保持良好和有条理:

Kev*_*vin 157

请尝试以下方法:

java -cp jar1:jar2:jar3:dir1:. HelloWorld
Run Code Online (Sandbox Code Playgroud)

默认的类路径(除非有CLASSPATH环境变量)是当前目录,所以如果你重新定义它,请确保你像我一样将当前目录(.)添加到类路径中.

  • 我找到的最好的方法是使用`java -cp*:.HelloWorld`.这样,我的类路径中的所有jar都会被包含在内. (28认同)

Ben*_*Ben 31

在Windows中:

java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method
Run Code Online (Sandbox Code Playgroud)

确保具有main函数的类位于其中一个包含的jar中


小智 19

Windows用户注意事项,罐子应分开;,而不是:.

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


mat*_*t b 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.  
Run Code Online (Sandbox Code Playgroud)

(请注意,用于分隔类路径上的条目的分隔符在操作系统之间是不同的,在我的Windows机器上;,通常是*nix :.)