簡體   English   中英

如何使用ClassLoader加載類

[英]How To Load classes using ClassLoader

我有一個名為Operator的接口,該接口的目錄為d:\\ operators界面定義如下:

package operators;

public interface Operator
{
    double calculate(double firstNumber,double secondNumber);
    String getSign();
}

在主程序(d:\\ ProjectFile94.6.7 \\ main)中,我想加載此接口並使用它。

String rootPath = System.getProperty("user.dir")+System.getProperty("file.separator");
            String operatorsPath = rootPath.replace("ProjectFile94.6.7" , "").replace("main" , "") + "operators";
System.out.println(operatorsPath);

//Load operators from another file
File operatorFile = new File(operatorsPath);
URL operatorFilePath = operatorFile.toURL();          
URL[] operatorFilePaths = new URL[]{operatorFilePath};
ClassLoader operatorsLoader = new URLClassLoader(operatorFilePaths);
Class operatorInterface = operatorsLoader.loadClass("operators.Operator");

該應用程序編譯良好,但在運行時出現此異常:

java.lang.ClassNotFoundException:operator.Operator

您不得將包名稱附加在classpath目錄中:

String operatorsPath = rootPath.replace("ProjectFile94.6.7" , "").replace("main" , "");

即目錄路徑應該只是D:/ 否則,您只是在告訴類加載器搜索D:/operators/operators/Operator.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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