【发布时间】:2014-09-21 01:19:17
【问题描述】:
我在 tomcat (7.0.55) 中有一个自定义 WebappClassLoader,它在 server.xml 中配置为
<Context allowCasualMultipartParsing="true">
<Loader loaderClass="org.project.system.core.classloader.DynamicClassLoader" />
</Context>
它已加载,一切都很好,但是当我打开一个加载类 org.test.User 的 JSP 时,该类不在 WEB-INF/classes 下,但可通过我的 DynamicClassLoader 加载,我收到此错误:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 7 in the generated java file
Only a type can be imported. org.test.User resolves to a package
所以,我进行了一些调试,并检查了每个 loadClass 调用是否已加载,并且是的:就在此错误消息之前,我看到了我的调试消息:
Trying to load org.test.User found!
Trying to load org.test NOT FOUND!!
Trying to load org.test NOT FOUND!!
Trying to load org.apache.el.ExpressionFactoryImpl found!
Trying to load com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl found!
Trying to load com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl found!
Trying to load org.apache.el.ExpressionFactoryImpl found!
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 7 in the generated java file
Only a type can be imported. org.test.User resolves to a package
看来,jsp 编译器需要 User 类。但真正奇怪的是,如果我从 Eclipse 中执行它,一切正常!当然,除了错误消息之外,输出看起来是一样的。我仔细检查了 eclipse 生成的配置文件和我的配置文件,但没有发现任何区别。
您知道可能出了什么问题吗?为什么它在 Eclipse 中没有任何错误,但在“正常”的 tomcat 安装中却没有?如果您需要任何进一步的信息,请告诉我!提前致谢!
【问题讨论】:
标签: jsp tomcat classloader