【发布时间】: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