Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义类加载器的JSP编译错误_Jsp_Tomcat_Classloader - Fatal编程技术网

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

自定义类加载器的JSP编译错误,jsp,tomcat,classloader,Jsp,Tomcat,Classloader,我在tomcat 7.0.55中有一个自定义WebappClassLoader,它在server.xml中配置为 <Context allowCasualMultipartParsing="true"> <Loader loaderClass="org.project.system.core.classloader.DynamicClassLoader" /> </Context> 因此,我进行了一些调试,并在每次loadClass调用中检查我的类是

我在tomcat 7.0.55中有一个自定义WebappClassLoader,它在server.xml中配置为

<Context allowCasualMultipartParsing="true">
    <Loader loaderClass="org.project.system.core.classloader.DynamicClassLoader" />
</Context>
因此,我进行了一些调试,并在每次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编译器似乎要求用户类。但真正奇怪的是,如果我在eclipse中执行它,一切都正常!当然,除了错误消息外,输出看起来是一样的。我仔细检查了eclipse生成的配置文件和我的配置文件,但没有发现任何区别


你知道会出什么问题吗?为什么它在eclipse中工作没有任何错误,但在正常的tomcat安装中却没有?如果您需要更多信息,请告诉我!提前谢谢

JSP编译器有时很难处理类路径中可以解析为包目录和class.class文件的项。如果您的类是从JAR文件加载的,请尝试从JAR文件中删除目录项,但当然要保留.class文件

如果目录和类在磁盘上,那么您可能需要将其提取出来,然后重新命名包或目录


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

名称与示例org.test.User中的名称类似,因此命名不应该有问题,是吗?您是否也有org.test.User.OtherClass?是,这个包中有多个类。想想ZIP JAR归档:它由目录和文件组成,但目录是可选的。如果省略目录,条目org.test.User只能引用一个对象:类。如果Java术语中的目录aka包也存在,则org.test.User(尤其是在不区分大小写的文件系统上)可以引用目录或类。这种歧义使编译器抱怨。
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