gpt4 book ai didi

java - 为什么我的类没有通过外部类加载器加载?

转载 作者:行者123 更新时间:2023-12-01 15:20:13 25 4
gpt4 key购买 nike

我想运行 Test2 包中 Main.class 的构造函数,位于文件夹 C:\classes\

这是我正在使用的代码。当它尝试将其转换为类时,它会抛出类未找到异常。然后,一旦它成为类对象的一部分,构造函数是否会自动运行,或者我是否必须以某种方式实例化它? Test2 作为文本输入到此代码中。

    if (Main.os.equals("Windows"))
{
String path = "C:\\classes\\";
}
else
{
String path = "~/classes/";
}

File file = new File(path);

try
{
URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};
Main.print("Stage 1");
ClassLoader cl = new URLClassLoader(urls);
Main.print("Stage 2");
Class cls = cl.loadClass(text + ".Main");
Main.print(text + " was loaded into memory.");
close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}

最佳答案

我怀疑您的问题是以下问题之一:

  1. 文件不存在或尚未正确指定。通过 file.exists()
  2. 检查
  3. 您的类文件未位于正确的目录中。如果 Main 类的包声明是 package Test2;,那么您的类文件必须位于以下位置:C:\classes\Test2\Main.class
  4. 如果 Main 是嵌套类,则加载时需要引用封闭类,例如 cl.loadClass("Test2.EnlookingClass$Main");

我猜你的问题是第二个问题! :)

祝你好运。

哦,是的,如果您希望调用构造函数,则需要创建对象的实例:clazz.newInstance() 是无参数构造函数的最简单方法。

关于java - 为什么我的类没有通过外部类加载器加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042901/

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