未捕获异常:java.lang.ClassNotFoundException:
这是一个运行Apache和Tomcat的windows服务器。我向现有包中添加了一个新类,并尝试从jsp页面引用它,如下所示:未捕获异常:java.lang.ClassNotFoundException:,java,jsp,classnotfoundexception,Java,Jsp,Classnotfoundexception,这是一个运行Apache和Tomcat的windows服务器。我向现有包中添加了一个新类,并尝试从jsp页面引用它,如下所示: jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session" 我错过什么了吗?我需要做一些特殊的事情才能将类添加到包中吗?提前谢谢 jsp页面加载良好,但当我尝试单击使用该类的按钮时,我得到 未捕获异常:java.lang.ClassNotFoundException:MY.NEWCLASS您需要确保类
jsp:useBean id="promotion" class="MY.NEWCLASS" scope="session"
我错过什么了吗?我需要做一些特殊的事情才能将类添加到包中吗?提前谢谢
jsp页面加载良好,但当我尝试单击使用该类的按钮时,我得到
未捕获异常:
java.lang.ClassNotFoundException:MY.NEWCLASS
您需要确保类文件存在于部署的webapplication的/WEB-INF/classes/MY/NEWCLASS.class
中。或者,当它位于名为filename.JAR
的JAR文件中的文件夹/MY/NEWCLASS.class
中时,您需要确保它存在于部署的webapplication的/WEB-INF/lib/filename.JAR
中
请注意,完全限定名称区分大小写。因此,名称必须完全匹配。也许您对问题中的代码示例很粗心,但以这种方式使用大写字母是不正常的。例如,它实际上很可能被称为
my.NewClass
。然后,您应该在jsp:useBean
中声明,这看起来好像您忘记了将新类部署到服务器上。如何调试这个
首先,您可以检查类路径。在获取异常的位置,获取当前类加载器:
ClassLoader cl = getClass().getClassLoader();
如果是a,请询问其URL:
while( cl != null ) {
if( cl instanceof URLClassLoader ) {
URL[] urls = ((URLClassLoader)cl).getURLs()
for( URL url : urls ) System.out.println(url);
}
cl = cl.getParent();
}
现在,您可以检查输出是否包含您期望的内容。@BalucC该包是全大写的,这是在我开始编写代码之前。类文件位于/WEB-INF/classes/MY目录中,但我不知道要签入/WEB-INF/lib的jar文件。如果jar中没有该文件,则不需要检查jar:),无论如何,此异常都会告诉您指定的类不在类路径中。可能是名称输入错误、文件名错误、文件扩展名错误、部署错误等等。因为您可以直接访问环境,所以您是唯一能够说出这一点的人。问题不可能出在类路径上,因为同一目录中的所有其他类都可以正常加载。。。但现在它决定自己离开。让我们看看它是否有效。然后它可能没有正确地重建/重新部署/重新启动。有些服务器在tmp/work目录中也有缓存。您可能还需要清理它。