【问题标题】:Java filter class java.lang.ClassNotFoundExceptionJava 过滤器类 java.lang.ClassNotFoundException
【发布时间】:2021-08-26 23:22:28
【问题描述】:

我有一个找不到过滤器类的 Java Web 项目,我收到此错误:

java.lang.ClassNotFoundException: AuthFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.sun.grizzly.util.ClassLoaderUtil.load(ClassLoaderUtil.java:166)
    at com.sun.grizzly.util.ClassLoaderUtil.load(ClassLoaderUtil.java:154)
    at ____bootstrap.Deployer.setFilters(Deployer.java:277)
    at ____bootstrap.Deployer.deploy(Deployer.java:336)
    at ____bootstrap.Deployer.deployExpandedWar(Deployer.java:410)
    at ____bootstrap.Deployer.deployApplication(Deployer.java:405)
    at ____bootstrap.Deployer.deployApplications(Deployer.java:107)
    at ____bootstrap.Deployer.start(Deployer.java:203)
    at ____bootstrap.____Bootstrap._start(____Bootstrap.java:38)
    at ____bootstrap.____Bootstrap.start(____Bootstrap.java:139)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at ____embedded.____EntryPoint.invoke(____EntryPoint.java:273)
    at ____embedded.____EntryPoint.main(____EntryPoint.java:96)

过滤器位于classes 目录中:

我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>ApexMod</display-name>
     
    <context-param>
        <param-name>version</param-name>
        <param-value>1.1.4.195.00.12</param-value>
    </context-param>
    
    <listener>
        <listener-class>oracle.dbtools.rt.web.SCListener</listener-class>
    </listener>

    <filter>
        <filter-name>AuthFilter</filter-name>
        <filter-class>AuthFilter</filter-class>
        <init-param>
            <param-name>debug-mode</param-name>
            <param-value>true</param-value>
        </init-param>

我尝试将课程更改为classes.AuthFilterWEB-INF.classes.AuthFilter

这是放置过滤器的正确目录吗?

【问题讨论】:

标签: java gradle web.xml


【解决方案1】:

package WEB-INF.classes; 不正确;你的'root'是WEB-INF/classes,然后你的包里面有目录。将源文件放在WEB-INF/classes 也是不正确的。

听起来您的 IDE 配置和/或构建文件搞砸了。我将从教程的第一页开始,正确设置一个项目,然后利用这些知识在这里修复您的项目。这个问题没有包含足够的细节(例如,没有提到我们在这里查看的 Web 框架)来详细说明,但作为一个总体思路,您的项目结构通常应该包含以下内容:

/home/user5507535/projects/MyCoolApp/src/main/java/com/foo/usersawesomething/AuthFilter.java

然后该源文件的顶部应该有package com.foo.usersawesomething;。 Gradle 的 build.gradle 文件将位于 /home/user5507535/projects/MyCoolApp 中,并且它只会知道源位于 src/main/java 中 - 您无需对其进行配置。

然后,Gradle 将(假设您根据您的 webapp 需要正确配置它)安排编译发生并将类文件放入适当的WEB-INF/classes 目录。查看您的 Web 框架的文档和教程以了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 2011-07-23
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2020-05-17
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多