在servlet中使用我自己的类(Java/Tomcat/Linux)
在过去的三天里,我找不到这个问题的单一答案。我需要能够在servlet中使用自己的类 我确信我的文件层次结构是正确的:在servlet中使用我自己的类(Java/Tomcat/Linux),java,jsp,tomcat,servlets,javac,Java,Jsp,Tomcat,Servlets,Javac,在过去的三天里,我找不到这个问题的单一答案。我需要能够在servlet中使用自己的类 我确信我的文件层次结构是正确的: |-WEB-INF/ |---classes/ |------com/ |---------myProject/ |------------user/ |---------------User.java |---------------Location.java |---------------Comment.java |------------servlet/ |------
|-WEB-INF/
|---classes/
|------com/
|---------myProject/
|------------user/
|---------------User.java
|---------------Location.java
|---------------Comment.java
|------------servlet/
|---------------DoComment.java
由于User.java、Location.java和Comment.java在一个包中被定义为com.myProject.User
/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
无法识别其他对象(找不到符号
错误)
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac -cp /usr/share/tomcat6/lib/servlet-api.jar com/myProject/servlet/DoComment.java
请帮忙 从javac手册页: -cp类路径
设置用户类路径,覆盖类路径环境中的用户类路径 变量如果既不是类路径也不是-class- 如果指定了路径,则用户类路径由当前 目录
基本上,当您使用-cp标志时,您正在重写类路径,因此您需要确保在类路径中指定所有必需的类。类路径条目的分隔符是一个
:
,它使用通配符。您将java源代码放在需要编译java类的位置。尝试编译源代码,然后将类文件(.class vs.java)添加到当前放置它们的位置
要使其工作,您必须确保类没有依赖项,并且类的包声明与您放置它们的文件夹层次结构匹配
即便如此,web项目通常也不是这样组合起来的。最好将这些类打包到一个JAR中,并将JAR放在WEB-INF/lib文件夹中
有关创建JAR的更多信息,请查看以下内容:问题已解决强> 我为
com.myProject.user
包创建了一个JAR文件,并将其保存在WEB-INF/lib
中。然后,我使用冒号分隔的两个类路径编译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
谢谢你,你的答案加起来就是正确答案。
祝您愉快。类路径语法依赖于操作系统。在Unix上,分隔符是:(冒号,而不是分号)。