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.AuthFilter
和 WEB-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 框架的文档和教程以了解更多信息。
我有一个 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.AuthFilter
和 WEB-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 框架的文档和教程以了解更多信息。