【问题标题】:ClassNotFoundException - While Loading a Class Dynamically in a Web Application using ClassLoaderClassNotFoundException - 使用 ClassLoader 在 Web 应用程序中动态加载类时
【发布时间】:2014-10-20 12:08:04
【问题描述】:

我试图在 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 应用程序中也能正常运行?

【问题讨论】:

  • 能否请您检查一下班级是否在战争中打包
  • 是的。阶级在战争中。并且战争存在于项目的 dist 文件夹下。
  • 但是您指向的是 C:/ 中的其他目录。提供相对网址

标签: java jakarta-ee web netbeans-7 classnotfoundexception


【解决方案1】:

提供给类加载器的 URL 似乎有问题。请提供一个相对URL

【讨论】:

  • 非常感谢您提供的信息。特别是为了将我的网址指向战争。或者,我们可以将 URLClassLoader 替换为默认的。 ClassLoader cl = DynamicWebClass.class.getClassLoader();
猜你喜欢
  • 2015-10-19
  • 2013-07-25
  • 2013-04-15
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2014-08-07
  • 2012-07-03
  • 1970-01-01
相关资源
最近更新 更多