这是运行Apache和Tomcat的Windows服务器。我在现有的包中添加了一个新类,并尝试从jsp页面引用它,如下所示:
jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session"
我错过了什么吗?我是否需要做一些特殊的事情才能将类添加到包中?提前谢谢。
jsp页面加载正常,但是当我尝试单击使用此类的按钮时,我得到了
未被捕获的例外:java.lang.ClassNotFoundException:MY.NEWCLASS
答案 0 :(得分:3)
您需要确保类文件存在于已部署的Web应用程序的/WEB-INF/classes/MY/NEWCLASS.class
中。或者当它位于名为/MY/NEWCLASS.class
的JAR文件中的文件夹filename.jar
中时,您需要确保它存在于已部署的Web应用程序的/WEB-INF/lib/filename.jar
中。
请注意,完全限定名称区分大小写。所以名称必须完全匹配。也许你对问题中的代码示例粗心大意,但是这样使用大写字母不是正常的naming convention。例如,存在实际称为my.NewClass
的可能性。然后,您应该在jsp:useBean
。
答案 1 :(得分:1)
这似乎忘记了将新类部署到服务器。你怎么调试这个?
首先,您可以检查类路径。在获得异常的地方,获取当前的类加载器:
ClassLoader cl = getClass().getClassLoader();
如果那是URLClassLoader,请询问它的网址:
while( cl != null ) {
if( cl instanceof URLClassLoader ) {
URL[] urls = ((URLClassLoader)cl).getURLs()
for( URL url : urls ) System.out.println(url);
}
cl = cl.getParent();
}
现在您可以检查输出是否包含您期望的内容。