我有一个包,我导入javax.servlet。*和javax.servlet.http。*当我尝试在命令提示符下编译它时,我得到错误
包javax.servlet不存在
我使用JDK 1.7.0和Tomcat 6.0。
您需要将Tomcat的/lib/servlet-api.jar
文件的路径添加到编译时类路径中。
javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java
类路径是Java需要查找导入的依赖项的地方。否则它将默认为当前文件夹,在上例中包含为.
。 ;
是Windows的路径分隔符;如果你使用的是基于Unix的操作系统,那么你需要使用:
。
即使在尝试建议的解决方案之后,也没有解决我的问题,因为我输入了许多java路径实例。
可能的解决方案(在ubuntu上测试)
geany .bashrc
export CLASSPATH=$CLASSPATH:/web/apache-tomcat-8.5.39/lib/servlet-api.jar
如果您正在使用maven项目,请将以下依赖项添加到您的pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
它是JSP还是Servlet?
好吧,这两个包实际上并没有像java.io那样内置到Java中。相反,它们带有支持Servlet的Web服务器(例如Tomcat)。所以在Java编译器能够编译我们的Servlet之前,我们需要让它知道在哪里找到这两个包中的类。
所需的类通常存储在名为servlet.jar的文件中。此文件的确切位置取决于您使用的特定Web服务器软件,但对于Tomcat,您可以在主Tomcat安装目录的lib子目录中找到它(例如d:\ Program Files \ Apache Group \ jakarta- Tomcat的3.2.3 \ LIB \的servlet.jar)。要使Java编译器能够编译Servlet,您需要将此文件添加到Java类路径中。默认情况下,Java仅在当前目录(“。”)中查找类。因此,“。”是默认的类路径。如果更改类路径以包含servlet.jar文件(Windows下的“.; d:... \ lib \ servlet.jar”,Unix中的“。:/ usr /.../ lib / servlet.jar”) ),那么Servlet应该编译得很好。
您可以指定在运行javac.exe时使用的类路径,如下所示:
d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar" MyServlet.java
或者在Linux中javac使用:而不是;
server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java
在Linux环境中,软链接显然不起作用。你必须使用物理路径。例如,在我的机器上,我在/usr/share/tomacat7/lib/servlet-api.jar
上有一个软链接,并使用它作为我的classpath参数导致编译失败并出现相同的错误。相反,我不得不使用/usr/share/java/tomcat-servlet-api-3.0.jar
这是软链接指向的文件。
这就是我解决问题的方法:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
从位置YOUR_INSTILLATION_PATH \ tomcat \ lib \ servlet-api.jar复制文件“servlet-api.jar”并将文件粘贴到Java目录中YOUR_INSTILLATION_PATH \ Java \ jdk1.8.0_121 \ jre \ lib \ ext
这将工作(测试)。
将servlet-api.jar添加到类路径中。它将可用于Tomcat的lib文件夹。
JSP和Servlet是服务器端编程。因为它是像Tomcat这样的服务器内置的内置包。路径可能是明智的
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\jsp-api.jar
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar
只是你想要做的是以下面的方式添加它
Right Click> My Computer>Advanced>Environment Variables>System variables
Do> New..> Variable name:CLASSPATH
Variable value:CLASSPATH=.;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;
这是我发现的。在我的环境变量中将/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar添加为CLASSPATH。操作系统是iOS。
如果使用bash:〜/ .bash_profile $CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar
如果使用zsh:〜/ .zshrc导出CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"
现在强制它工作,运行source .bash_profile
(或.zshrc)或者可以重新启动计算机,它适用于当前用户。