gpt4 book ai didi

自定义类加载器的 JSP 编译错误

转载 作者:行者123 更新时间:2023-11-28 23:34:25 26 4
gpt4 key购买 nike

我在 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 编译器有时很难处理类路径中的项目,这些项目可以同时解析为 package(目录)和 class(.类 文件)。如果您的类是从 JAR 文件加载的,请尝试从 JAR 文件中删除目录条目(但当然要保留 .class 文件)。

如果目录和类在磁盘上,您可能不得不将其吸收并重命名包或目录。

Eclipse 与独立版的区别可能与 Eclipse 使用的不同部署描述符有关。您可能想查看 Eclipse 正在做什么……可能存在稍微不同的配置或打包策略。

关于自定义类加载器的 JSP 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com