gpt4 book ai didi

java - 从任意位置加载自定义类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:59 26 4
gpt4 key购买 nike

我在 Java 类加载方面遇到了一些问题。在我的项目中,我试图从任何地方动态加载一个类。但是,我目前无法加载硬编码,并且在谷歌搜索和堆栈溢出检查 6 小时后仍然一无所知。

我怀疑我正在加载的类的包名有问题。我的目标是在 project/resources/dynamicFolderNonInClassPath/loadThis 目录中加载类 LoadAClass.java。由于我将我的 URLClassLoader 设置为上面的文件夹,因此它的包已设置为

package loadThis;

public class LoadAClass{
static{
System.out.println("I am loaded");
}

(...)
}

但是我一直收到一个类未找到的异常。

File file = new File("C:/Users/Robert/Documents/workspace/project/resources/dynamicFolderNonInClassPath/");
if (!file.exists()) System.out.println("typo!"); //debug print
URL url = file.toURI().toURL();
URLClassLoader loader = new URLClassLoader(new URL[]{url});
String classToBeLoaded = "loadThis.LoadAClass";

Class classy = loader.loadClass(classToBeLoaded);
System.out.println(classy.getCanonicalName()); //debug print

我尝试了不同的组合,例如直接将 URLClassLoader 设置为文件或提供完整的 /resources/dynamicFolderNonInClassPath/loadThis 作为 URL,但到目前为止没有成功。

有人在圣诞气氛中看到了问题?我似乎对此功能有一些误解,我希望看到它得到修复。

最佳答案

您缺少正斜杠 '/'

File file = new File("C:/Users/Robert/Documents/workspace/project/resources/dynamicFolderNonInClassPath");
if (!file.exists()) System.out.println("typo!"); //debug print
URL url = new URL("C:/Users/Robert/Documents/workspace/project/resources/dynamicFolderNonInClassPath/");
URLClassLoader loader = new URLClassLoader(new URL[]{url});
String classToBeLoaded = "loadThis.LoadAClass";

Class classy = loader.loadClass(classToBeLoaded);
System.out.println(classy.getCanonicalName()); //debug print

看第三行

关于java - 从任意位置加载自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com