gpt4 book ai didi

java - 类路径上的类文件出现 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-02 16:16:43 26 4
gpt4 key购买 nike

我有以下代码:

    // Test TODO remove
try {
System.out.println(System.getProperties().getProperty("java.class.path"));
this.getClass().getClassLoader().loadClass("mypackage.MyClass");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

现在输出显示该类位于类路径上,即:

/...some/path.../workspace/project/target/test-classes:/rest/of/the/classpath
java.lang.ClassNotFoundException: mypackage.MyClass
...here be stacktrace...

我还确保类文件实际上位于给定位置,即该文件存在:

/...some/path.../workspace/project/target/test-classes/mypackage/MyClass.class

也许以下内容很重要:显示的代码是在附加到 jUnit 测试的 javaagent 中执行的,我以编程方式启动(通过 Runtime.execute(...)) - 因此可能有一些超出明显范围的内容可以执行后台错误...但仍然:如果类路径包含带有该类的文件夹,为什么它无法加载?

最佳答案

Java 代理在启动 JVM 的早期就被加载(出于明显的原因),并且有自己的“类路径”,因此它实际上并不是由(历史上命名的)系统类加载器加载的。这就是为什么你有一个“jarpath”作为命令行参数的一部分。

所以你需要像System.getSystemClassLoaderURLClassLoader.newInstance(带有java.class.path)或Thread .getContextClassLoader 根据您的情况。

关于java - 类路径上的类文件出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565804/

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