Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在servlet中使用我自己的类(Java/Tomcat/Linux)_Java_Jsp_Tomcat_Servlets_Javac - Fatal编程技术网

在servlet中使用我自己的类(Java/Tomcat/Linux)

在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/ |------

在过去的三天里,我找不到这个问题的单一答案。我需要能够在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上,分隔符是:(冒号,而不是分号)。