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

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

我认为我需要做的是在类路径中包含这个 jar: jsr181-api.jar (资料来源)。有没有一种简单的临时方法(在 solaris 上)来做到这一点?我不想把它添加到我的 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

更新: 已经包装好了,但还是不太好用。我已经创建了一个 新问题来保持事情井井有条:

386530 次浏览

试试以下方法:

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

默认的类路径(除非有一个 CLASSPATH 环境变量)是工作目录,所以如果重新定义它,一定要添加工作目录(.)到类路径。

使用 -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.

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

在窗口:

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

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

Java-classspath./javax.jar,假设 javax 在当前文件夹中,编译目标是“ HelloWorld.java”,并且可以不使用 main 方法进行编译

注意,对于 Windows 用户,罐子应该由 ;而不是 :分隔。

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