2013-05-02 28 views
0

在过去的3天中,我找不到针对此问题的单个答案。我需要能够在我的servlet中使用自己的类。在servlet中使用我自己的类(Java/Tomcat/Linux)

我敢肯定,我的文件层次是正确的:

|-WEB-INF/ 
|---classes/ 
|------com/ 
|---------myProject/ 
|------------user/ 
|---------------User.java 
|---------------Location.java 
|---------------Comment.java 
|------------servlet/ 
|---------------DoComment.java 

由于User.java,Location.java和Comment.java在一个包中定义为com.myProject.user我知道我应该去的主要根源Java项目,并编译它们是这样的:

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/Location.java 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/User.java 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/Comment.java 

然而,当我在编辑使用类路径javac不能识别其他物体(cannot find symbol错误)。

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac -cp /usr/share/tomcat6/lib/servlet-api.jar com/myProject/servlet/DoComment.java 

请帮忙!

回答

0

问题解决了!

我为com.myProject.user软件包创建了一个JAR文件并将其保存在WEB-INF/lib中。比我用两个用冒号分开的classpath编译servlet。

下面是代码:

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo jar cvf myproject-user.jar com/myProject/user/User.class com/myProject/user/Location.class com/myProject/user/Comment.class 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ mv myproject-user.jar ../lib/myproject-user.jar 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo service tomcat6 restart 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac -cp /usr/share/tomcat6/lib/servlet-api.jar:../lib/myproject-user.jar com/myProject/servlet/DoComment.java 

谢谢durron597kwikness你的答案被合并正确的答案。 祝您有愉快的一天。

0

从javac的手册页:

-cp类路径
设置用户类路径,它将覆盖CLASSPATH环境 变量用户类路径。如果未指定CLASSPATH或-class- 路径,则用户类路径由当前的 目录组成。

基本上,当你使用-cp标志时,你正在覆盖类路径,所以你需要确保你在类路径中指定了所有需要的类。类路径条目的分隔符是:,它需要通配符。

+0

类路径语法是依赖于操作系统的。在Unix上,喜欢分隔符是:(冒号,而不是分号)。 – daniero 2013-05-02 22:57:05

0

您正在将java源代码放到需要编译java类的位置。尝试编译源代码,然后添加目前放置它们的类文件(.class vs .java)。

为了达到这个目的,您必须确保这些类没有依赖关系,并且您的类的包声明与您将它们放置在其中的文件夹层次结构匹配。

即便如此,这通常不是Web项目的组合方式。将类打包到JAR中并将JAR放入WEB-INF/lib文件夹中会更好。

有关创建一个JAR的更多信息,检查了这一点:http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

相关问题