【问题标题】:Compile error: package javax.servlet.jsp does not exist编译错误:包 javax.servlet.jsp 不存在
【发布时间】:2015-05-07 22:06:19
【问题描述】:

首先,这不是重复的帖子,因为:

1.- 我在没有任何 IDE、Ant 或 Maven 的情况下构建。

2.- 我已经找过了,并尝试了Compile error: package javax.servlet does not exist中给出的解决方案。

但是,我的问题仍然在这里。

基本上,我正在尝试导入:

import javax.servlet.jsp.JspWriter;

但在编译时我得到:

./src/tfg/lti/UI/Painter.java:4: error: package javax.servlet.jsp does not exist import javax.servlet.jsp.JspWriter

我像下一行的第一行一样编译类,在寻找解决方案后,我尝试了下一个,因为用户说链接文件给他带来了麻烦,需要指向真实文件:

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/ ./src/tfg/lti/Config/Setup.java

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/tomcat6/lib/servlet-api.jar ./src/tfg/lti/Config/Setup.java

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/java/servlet-api.jar ./src/tfg/lti/Config/Setup.java

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/java/servlet-api-2.5.jar ./src/tfg/lti/Config/Setup.java

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/java/servlet-api-2.4.jar ./src/tfg/lti/Config/Setup.java

如您所见,我尝试使用所有可能的链接到我为该软件包提供的文件,但编译时仍然出现错误。在那里您可以快速查看文件:

ll /usr/share/tomcat6/lib/ | grep servlet
lrwxrwxrwx 1 root root   30 jul 24  2014 servlet-api.jar -> ../../java/servlet-api-2.5.jar

ll /usr/share/java/ | grep servlet
-rw-r--r--   1 root root    93251 oct 22  2011 servlet-api-2.4.jar
-rw-r--r--   1 root root    88360 jul 24  2014 servlet-api-2.5.jar
lrwxrwxrwx   1 root root       19 oct 22  2011 servlet-api.jar -> servlet-api-2.4.jar

有什么想法吗?

提前谢谢你

更新:由于 Albert 告诉我在 classpath 中使用 jsp-api,我尝试了以下几种:

javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/tomcat6/lib/servlet-api.jar:/usr/share/tomcat6/lib/jsp-api.jar ./src/tfg/lti/Config/Setup.java
javac -Xlint -d ./Server/WEB-INF/classes/ -cp ./Server/WEB-INF/classes/:./Server/WEB-INF/jar/:/usr/share/java/servlet-api-2.4.jar:/usr/share/java/jsp-api-2.1.jar ./src/tfg/lti/Config/Setup.java

结果相同。可供我使用的文件 jsp-api:

ll /usr/share/tomcat6/lib/ | grep jsp-api
lrwxrwxrwx 1 root root   26 jul 24  2014 jsp-api.jar -> ../../java/jsp-api-2.1.jar

更新 2:添加 jsp-api.jar 包含的内容(您说得对,Albert,JspWriter 就在其中)。添加一些代码(导入等)。

jsp-api-2.1.jar 内容:

出现故障的类的代码:

进口:

import java.util.Date;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;
import tfg.lti.Config.TextFileWorker;

第一个函数,调用JspWriter所在的函数:

public void BuildUI(boolean periodEnabled, Date nextDeliver, 
        String nextDeliveryTitle, String path, JspWriter webWriter)

调用函数:

BuildLoadUI(nextDeliveryTitle, path, webWriter);

我需要工作的部分目标函数:

private void BuildLoadUI(String nextDeliveryTitle, String path,
                                JspWriter webWriter) throws IOException
{

    TextFileWorker Reader = new TextFileWorker();
    String[] fileString;

    webWriter.print("<h2>Evaluación - " + nextDeliveryTitle + "</h2>" + '\n');

【问题讨论】:

  • 你是否得到同样的错误:javax.servlet.jsp does not exist?它应该在jsp-api.jar 中找到JspWriter。查看 jar 以查看这些类是否真的存在。尝试发布您的代码,或者至少发布imports 以查看是否错过了某人。
  • 添加了一些代码,并查看了 jar 文件。感谢您帮助艾伯特。
  • 这样的错误对我来说仍然没有意义。这是你唯一的错误吗? javac 运行时是否还有其他输出?
  • 是的,还有使用 JspWriter 的行

标签: java jsp servlets


【解决方案1】:

我认为您错过了在您的 classpath 中添加 lib/jsp-api.jar,这是这些课程所在的位置。

【讨论】:

  • 解决了 Albert 的问题,谢谢。一开始它没有用,因为我很乱,编译时把这个jar添加到了错误的类中!
【解决方案2】:

如果您使用的是 maven,请将其添加到:

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
</dependency>

版本应该在存储库中与您的版本匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 2012-02-29
    • 2017-08-30
    • 2020-05-23
    • 2019-01-21
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多