簡體   English   中英

ClassNotFoundException-使用ClassLoader在Web應用程序中動態加載類時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM