我认为我需要做的是在我的类路径中包括这个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
更新:不错,虽然很酷,但是仍然不能正常工作。我创建了一个新问题以使事情井井有条:
#1 楼
请尝试以下操作:java -cp jar1:jar2:jar3:dir1:. HelloWorld
默认的类路径(除非有CLASSPATH环境变量)是当前目录,因此,如果您重新定义它,请确保添加像我一样将当前目录(。)移到类路径。
评论
github.com/SpotterRF/json-examples/tree/master/java/jackson在Makefile中有一个很好的例子
–coolaj86
2012年4月24日22:18
@ CoolAJ86链接似乎已消失
–詹尼斯·佩斯尼克(Janis Peisenieks)
13年1月22日在17:48
我发现的最好方法是使用java -cp *:。你好,世界。这样,我的类路径中的所有jar都将始终包含在内。
– N.N.
13年3月19日在12:29
#2 楼
在Windows中:java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method
确保具有main函数的类在所包含的jar之一中
#3 楼
对于Windows用户,请注意,广口瓶应该用;
而不是:
分隔。例如:
javac -cp external_libs\lib1.jar;other\lib2.jar;
#4 楼
使用-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通常是:
。)#5 楼
使用:apt HelloImpl.java -classpath /sac/tools/thirdparty/jaxws-ri/jaxws-ri-2.1.4/lib/jsr181-api.jar:.
可以,但是它给了我另一个错误,请参见新问题
#6 楼
javac HelloWorld.java -classpath ./javax.jar,假设javax在当前文件夹中,并且编译目标为“ HelloWorld.java”,则可以不使用主方法进行编译
评论
附带说明一下,仅在编译(即javac)时需要某些jar,而在运行时(即java)则不需要。例如,龙目岛罐子。