未捕获的异常:java.lang.ClassNotFoundException:

时间:2011-03-17 14:39:28

标签: java jsp classnotfoundexception

这是运行Apache和Tomcat的Windows服务器。我在现有的包中添加了一个新类,并尝试从jsp页面引用它,如下所示:

jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session" 
我错过了什么吗?我是否需要做一些特殊的事情才能将类添加到包中?提前谢谢。

jsp页面加载正常,但是当我尝试单击使用此类的按钮时,我得到了 未被捕获的例外:java.lang.ClassNotFoundException:MY.NEWCLASS

2 个答案:

答案 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();
}

现在您可以检查输出是否包含您期望的内容。