繁体   English   中英

java.lang.ClassNotFoundException:org.apache.catalina.connector.Response

[英]java.lang.ClassNotFoundException: org.apache.catalina.connector.Response

我正在使用Eclipse Helios来编写在Tomcat 5.5上运行的JSP和POJO。 我正在尝试使用org.apache.catalina.connector.Response类,如下所示:

import org.apache.catalina.connector。*; ...响应resp =(响应)r;

其中r是HttpServletResponse的一个实例。 Eclipse没有发出警告,项目编译得很好。 但是,当我浏览到包含此代码的页面时,我收到以下错误:

java.lang.ClassNotFoundException:org.apache.catalina.connector.Response

什么是错的?

我也用这种方式尝试过,结果相同。

org.apache.catalina.connector.Response resp =(org.apache.catalina.connector.Response)r;

谢谢,

EAN

ClassNotFoundException意味着类在编译时可用,但在运行时不可用。 因此,如何在源代码中导入它没有任何区别。

我没有检查过,但很有可能Tomcat不允许Web应用程序访问其内部类。 我没有检查过的原因是我知道即使我能做到这一点也不错。 你应该编写API(在这种情况下,javax.servlet。*下的东西)而不是实现。

显然,Tomcat设计者并不认为webapps内部类是一个好主意。 这有几个可能的原因:

  • 它使您的代码依赖于Tomcat。
  • 面对内部细节的变化,它会使您的代码变得脆弱; 即它取决于Tomcat版本。
  • Web应用程序上下文中的Tomcat堆栈或其他内容可能会表示您的Response对象是一个包装器而不是您期望的类。

要更改使代码“正常工作”,您可能需要修改Tomcat JAR文件...这将使其更不便携。 有关可能帮助您割开喉咙的更多信息,请参阅此处 请注意,这是Tomcat 5.5特定的......并且页面的Tomcat 6.0版本是不同的。


我想将它转换为org.apache.catalina.connector.Response的原因是在将HTTP响应标头发送到客户端之前读取它们。

我懂了。 那么也许您应该实现自定义Valve。 (这是特定于Tomcat的事情。)或者更好的是,看看现有的Valve实现之一是否能为您完成这项工作。

我不认为你可以使用那门课。 我不确定你要做什么,但是使用HttpServletResponse,你应该好好去。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM