![](/img/trans.png)
[英]load class not in classpath dynamically in web application - without using custom classloader
[英]ClassNotFoundException - While Loading a Class Dynamically in a Web Application using ClassLoader
我正在嘗試在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似乎有問題。 請提供相對網址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.