java - ClassNotFoundException - 使用 ClassLoader 在 Web 应用程序中动态加载类时

标签 java jakarta-ee web netbeans-7 classnotfoundexception

我正在尝试使用 NetBeans IDE 中的 java ClassLoader 的 loadClass 方法动态加载类。 当我运行以下独立程序时,它会正确执行并按预期打印输出:

public class StandaloneClass {

    public static void main(String[] args) {
        try {

            String directory = "C:\\Workspace\\ProjectMeteor\\src\\java\\com\\meteor\\loader";

            File file = new File(directory);
            URL url = file.toURI().toURL();
            URL[] urls = new URL[]{url};

            ClassLoader cl = new URLClassLoader(urls);

            Class cls = cl.loadClass("com.meteor.loader.ClassToBeLoaded");
            Object o = cls.newInstance();

            System.out.println("Class Loaded: " + o.getClass().toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

输出:- 已加载类:类 com.meteor.loader.ClassToBeLoaded

但是当我运行同一段代码(在 Web 应用程序中)时,它会抛出 ClassNotFoundException。

@Path("/test")
public class DynamicWebClass {

    @GET
    @Path("/getFileExplorerNodes")
    @Produces(MediaType.TEXT_PLAIN)
    public String getFileExplorerNodes() {
        try {

            String directory = "C:\\Workspace\\ProjectMeteor\\src\\java\\com\\meteor\\loader";

            File file = new File(directory);
            URL url = file.toURI().toURL();
            URL[] urls = new URL[]{url};

            ClassLoader cl = new URLClassLoader(urls);

            Class cls = cl.loadClass("com.meteor.loader.ClassToBeLoaded");
            Object o = cls.newInstance();

            return o.getClass().toString();

        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
    }

}

输出:-
java.lang.ClassNotFoundException:com.meteor.loader.ClassToBeLoaded

为什么在独立程序中运行良好时,在 Web 应用程序中抛出异常? 如何解决此问题并使其在 Web 应用程序中也能正常运行?

最佳答案

看起来提供给类加载器的 URL 有问题。请提供相对URL

关于java - ClassNotFoundException - 使用 ClassLoader 在 Web 应用程序中动态加载类时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465364/

相关文章:

java - Glassfish 3.1部署错误

javascript - 从 Web 应用程序中删除 firebase 数据

mysql - 如何在jsp中将生成的表响应保存到excel文件中

java - 如何使用 jBCrypt 比较来自 2 个 servlet 的散列密码

java - 在 Spring MVC 应用程序的 Controller 中没有收到 ajax 请求?

java - Spring MVC 模拟

java - 部署描述符中的 xml 声明有何重要性?

javascript - Cloudflare Rocket Loader 不适用于移动设备

java - jTextField 验证数字和一位小数?

java - 对象数组