我想从另一个包加载类(运算符是包名)。我使用这个语句:
File operatorFile = new File(operatorPath);
URL operatorFilePath = operatorFile.toURL();
URL[] operatorFilePaths = new URL[]{operatorFilePath};
ClassLoader operatorsLoader = new URLClassLoader(operatorFilePaths);
Class operatorInterface = operatorsLoader.loadClass("operators.Operator");
但是在运行时我遇到了这个例外:
我不知道我打电话的方式不正确或其他问题我的代码是否存在。任何人都可以帮助我吗?
答案 0 :(得分:1)
File operatorFile = new File(operatorPath);
这已经错了。应使用位于包结构顶部的目录初始化File
。在这种情况下,operatorPath/..
,假设operatorPath
为"operators"
。
URL operatorFilePath = operatorFile.toURL();
URL[] operatorFilePaths = new URL[]{operatorFilePath};
ClassLoader operatorsLoader = new URLClassLoader(operatorFilePaths);
Class operatorInterface = operatorsLoader.loadClass("operators.Operator");
应该从那里开始工作。