我在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中没有任何错误但在“普通”tomcat安装中没有任何错误?如果您需要任何进一步的信息,请告诉我们!提前谢谢!
答案 0 :(得分:0)
JSP编译器有时很难处理类路径中可以解析为package
(目录)和class
(.class
文件)的项目。如果从JAR文件加载类,请尝试从JAR文件中删除目录条目(当然,请保留.class
文件。)
如果磁盘上有目录和类,则可能需要将其删除并重命名包或目录。
Eclipse与独立版本的区别可能与Eclipse使用的不同部署描述符有关。您可能想要查看Eclipse正在做什么......可能会有一些略有不同的配置或打包策略。