这是我的情况:我在项目 A 中有一个类。我想在项目 B 中的一个方法中加载这个类,而不需要将项目 A(或包含该类的 JAR)添加到我的项目 B 类路径中(我个人不反对这样做那样,但我必须按照规范构建它)。
请注意,我不知道此类的绝对路径(我们称之为“MyClass”),因为项目 A 可能安装在不同的位置。但是,我会知道如何根据我当前的目录导航到它,这就是我所做的。
这是我尝试过的:
// Navigate to the directory that contains the class
File pwd = new File(System.getProperty("user.dir"));
File src = pwd.getAbsoluteFile().getParentFile();
File dir = new File(src.getAbsolutePath() + File.separator + "folder" + File.separator + "src");
// dir is the directory that contains all the packages of project A
// Load the class
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] {dir.toURI().toURL()});
try {
classLoader.loadClass("com.blahblahblah.MyClass");
} catch (ClassNotFoundException exception) {
}
这会引发 ClassNotFoundException。难道我做错了什么?