gpt4 book ai didi

java - 动态加载类文件抛出ClassNotFoundException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:08 35 4
gpt4 key购买 nike

我们有一个 servlet 项目,其中包含(在许多其他类中)我们向用户公开的接口(interface)。

用户可以编译自己的类(以 .class 文件的形式)来实现所提供的接口(interface),并将它们放在我们的项目可以识别的文件夹中。当 servlet 启动时,它使用 URLClassLoader 加载该文件夹中的所有 .class 文件。 (因此用户可以 Hook 到某些事件。)

据我所知,类文件已正确定位和加载,有点。当加载用户编译的 .class 文件时,抛出 ClassNotFoundException 异常,但它提示接口(interface),它应该已经在类路径中了。

Caused by: java.lang.ClassNotFoundException: com.company.project.OurInterface
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

动态加载.class文件时,是否找不到接口(interface)?

最佳答案

也许您还没有为您的 URLClassLoader 指定父类加载器。

您的应用程序的类加载器应该是动态类加载器的父类加载器:

ClassLoader dynamicClassLoader = 
new URLClassLoader(..., OutInterface.class.getClassLoader());

关于java - 动态加载类文件抛出ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073245/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com