我想在NetBeans IDE中使用Java ClassLoader的loadClass方法动态加载类。 当我运行下面的独立程序它得到正确执行和打印效果与预期输出:ClassNotFoundException - 虽然使用ClassLoader在Web应用程序中动态加载类
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应用程序中正常运行?
请您检查课堂是否打包在战争 – dasrohith 2014-10-20 12:13:24
是的。这个阶级在战争中。战争出现在项目的dist文件夹下。 – 2014-10-20 12:28:05
但是你指向C:/中的其他目录。提供一个相对的网址 – dasrohith 2014-10-20 12:34:01