我在编译java servlet时遇到了大问题。据我所见,香港专业教育学院做了我需要做的一切,我已经正确安装了tomcat 7,并且tomcat正在工作。据我所知,我需要将servlet.jar包添加到我的类路径中。似乎在我的系统上没有servlet.jar,但是我可以从tomcat docs中了解到它现在的servlet-api.jar。
我已经通过在/etc/environment
编辑类路径来完成此操作:
PATH = “的/ usr / local / sbin中:在/ usr / local / bin中:/ usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /游戏” CLASSPATH = “/ USR /共享/ tomcat7 / LIB / servlet的api.jar文件”
不幸的是,仍然没有运气,我无法编译java servlet,我仍然会收到有关javax.servlets
缺少符号的警告。
我正在使用ubuntu 11.10 x64。有什么想法吗?
答案 0 :(得分:3)
我已经通过在
/etc/environment
编辑类路径来完成此操作:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" CLASSPATH="/usr/share/tomcat7/lib/servlet-api.jar"
看起来很好。 PATH
与特定问题无关。 Java没有以任何方式使用它。它仅供操作系统平台用于查找可执行文件。 CLASSPATH
类似,但仅供Java使用以查找在编译和/或运行时使用的类。
您的问题很可能是因为您使用了-cp
或-classpath
javac
命令的参数。在这种情况下,CLASSPATH
环境变量将被忽略(顺便说一下,这也适用于java
命令,当使用-jar
参数时也是如此。 / p>
您需要通过 指定类路径 CLASSPATH
环境变量或 -cp
或{ {1}}论点。一般的建议是忘记-classpath
环境变量,因为当你想要做的不仅仅是“Hello World”时,这被认为是一种糟糕的做法。您可以使用CLASSPATH
在-cp
或-classpath
参数中指定多个路径。
:
如果您厌倦了每次重复输入,只需将其放在$ cd /path/to/package/root/of/your/servlet/code
$ javac -cp .:/path/to/servlet-api.jar com/example/YourServlet.java
脚本中,或者使用Ant等构建工具(允许通过XML文件进行配置),或者只使用像Eclipse这样的IDE,Netbeans或IntelliJ,只需保存源文件即可自动完成。
答案 1 :(得分:2)
您不应该有CLASSPATH环境变量。
更好的方法是在编译时使用-classpath
参数javac.exe
,并在运行时使用java.exe
。以这种方式添加Tomcat servlet-api.jar。
另一个建议是学习Ant。它是一个基于XML的XML驱动构建工具。它比Maven更容易学习和使用。我从那开始。
答案 2 :(得分:2)
javax.servlets
在servlet-api.jar
中定义,因此您的问题必须以某种方式与您的配置相关。你用什么来编译?您是直接发布javac
命令还是使用maven,ant或者eclipse等构建工具?我建议使用maven,因为它使用单个配置文件为您处理依赖关系。真的很容易拿起来。
在maven中,您需要首先安装/配置maven,然后使用set file结构启动项目(这是简化但足够的):
/src/main/java - The root of your java files
/src/main/webapp - The root of your webapp
/pom.xml - Maven configuration file
因此,servlet的完整文件列表可能是:
/src/main/java/com/mycompany/myapp/MyServlet.java
/src/main/webapp/WEB-INF/web.xml
/src/main/webapp/index.jsp
/pom.xml
前3行(根文件结构除外)与任何Web应用程序相同,最后一个是您的配置文件,如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>myapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
这里的重要部分是对servlet-api的依赖是由maven处理的,所以不需要下载它,或者设置类路径或任何东西。设置此文件结构并编辑pom后,只需将控制台导航到根目录并键入mvn package
即可。这将下载你的依赖项,编译你的代码,打包你的战争。还有很多maven提供的修改非常少。相比之下,蚂蚁需要这样:
待添加