Java 过滤器 class java.lang.ClassNotFoundException

Java filter class java.lang.ClassNotFoundException

我有一个 Java 网络项目找不到过滤器 classes,我得到这个错误:

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>

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

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

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

听起来你的 IDE 配置 and/or 构建文件搞砸了。我将从教程的第一页开始,正确设置一个项目,然后利用这些知识并在此处修复您的项目。这个问题没有包含足够的细节(例如,没有提到我们在这里看到的是哪个网络框架)来进入细节,但作为一个一般的想法,你的项目结构通常应该涉及以下内容:

/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 需求正确配置了它)安排编译发生并将 class 文件放入适当的 WEB-INF/classes目录。查看您的 Web 框架的文档和教程以了解更多信息。