我创建了简单的 Java Servlet:WelcomeServlet.java。
然后,我尝试通过以下方式编译此文件:
javac WelcomeServlet.java
结果我看到编译错误:
包 javax.servlet 不退出
我尝试通过 Google 找到此错误的解决方案。我找到了答案的第一部分:java编译器没有看到servlet-api.jar文件。
我知道,Apache Tomcat 的 lib 文件夹中包含 servlet-api.jar 文件。
所以,我有这个文件,但是我必须在哪里复制这个文件?
我尝试不同的文件夹:
echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26
%PATH%
包含此行:C:\Program Files\Java\jdk1.6.0_26\bin
所以,我复制:
%JAVA_HOME%\bin
%JAVA_HOME%\lib
%JAVA_HOME%\jre\lib
结果是同样的错误。 只有在我将 servlet-api.jar 复制到目录中之后: %JAVA_HOME%\jre\lib\ext
编译完成成功。
我的问题:为什么?为什么我必须复制到文件夹 %JAVA_HOME%\jre\lib\ext ??
文档中描述了此时此刻?
还有其他问题,我们有一些官方文档或规范来描述 jdk 文件夹的文件夹结构?
最佳答案
运行 javac 时,您需要使用 -classpath 命令行选项来指定希望编译器搜索的一个或多个目录。编译器在 %JAVA_HOME%\jre\lib\ext 中找到您的 .jar 的原因是因为它默认搜索扩展目录。
这是针对 Java 1.5 的,但我相信它或多或少仍然是正确的:
http://docs.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html
关于servlets - Java 编译错误。 servlet-api.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347157/