【发布时间】:2010-03-09 22:03:30
【问题描述】:
我们有一个大型网络应用程序安装,使用 Apache/Tomcat/Jasper 和 jboss。在开发环境中,JSP 是动态编译的。不幸的是,有一个包特别是动态编译似乎无法导入。对于某些类,使用完全限定的引用而不是导入有效,但并非对所有类都有效。所有有问题的类都在一个 jar (nonEjb.jar) 中。预编译 JSP 可以正常工作,但是每次我们需要更改受影响的文件之一时都必须这样做当然是非常痛苦的。这个问题已经存在了很长一段时间,我真的很想解决它,因为我准备在受影响的区域做一些工作。
这是一个小测试页。第一次导入失败。导入的两个类非常相似,唯一显着的区别是它们的包放置。 (是的,我已经验证了这两个类的包声明都是正确的。)
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page errorPage="/error.jsp" %>
<%@ page import="com.elementk.lms.product.otr.OtrProviderType" %>
<%@ page import="com.elementk.lms.product.course.CourseType" %>
<html>
<body>
<hr>
Displaying the page...
<br>
<%= OtrProviderType.B24x7_PROVIDER.getId() %> value
<br>
<%= CourseType.SELF_STUDY.getId() %> value
</hr>
</body>
<html>
结果:
09 Mar 2010 21:29:40,555 ERROR [K] [RequestTimingFilter.doFilter:65] Unable to compile class for JSP:
An error occurred at line: 6 in the generated java file
The import com.elementk.lms.product.otr cannot be resolved
如果我删除导入并完全限定引用(如 com.elementk.lms.product.org.OtrProviderType),我会收到相同的错误。
什么可能导致 JSP 编译器定位其中一个类而不定位另一个类?
【问题讨论】:
-
完成。我会包含一个堆栈跟踪,但它与任何其他 JSP 编译错误没有什么不同。 (其中似乎没有任何内容可以提供问题的线索。)