gpt4 book ai didi

java - ClassNotFoundException 但类位于类路径和同一个 jar 中

转载 作者:行者123 更新时间:2023-12-04 04:56:12 27 4
gpt4 key购买 nike

问题

是什么导致 ClassNotFoundException ?

详情

我收到了 ClassNotFoundException尝试加载我认为位于类路径上的类时 - 该类是 com.ldbc.driver.db.BasicDb , com.ldbc.driver.db.Db 的实现

当我尝试运行此命令时:

java -cp core/target/core-0.1.jar:distribution/target/ldbc-driver-0.1.tar.gz com.ldbc.driver.Client -db com.ldbc.driver.db.BasicDb

我收到错误:
java.lang.ClassNotFoundException: com.ldbc.driver.db.BasicDb
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.ldbc.driver.util.ClassLoaderHelper.loadClass(ClassLoaderHelper.java:163)
at com.ldbc.driver.util.ClassLoaderHelper.loadDb(ClassLoaderHelper.java:29)
at com.ldbc.driver.Client.start(Client.java:167)
at com.ldbc.driver.Client.main(Client.java:80)

它发生在这一行:
Class<?> loadedClass = classLoader.loadClass( className );

要检查类是否在类路径上(在我的一个 jar 中),我执行了以下操作:
grep "BasicDb" distribution/target/ldbc-driver-0.1.tar.gz

-> 返回 0 比赛
grep "BasicDb" core/target/core-0.1.jar

-> 返回 1 匹配: Binary file core/target/core-0.1.jar matches
如果我在编译时导入类它工作正常,即以下工作:
import com.ldbc.driver.db.basic.BasicDb;

虽然我的 grep测试似乎表明类 在类路径上并且在那里 只有一次 ,我想测试是否由于某种原因不同的类附加到不同的根类加载器。

但是当打印出来时,似乎到处都使用了相同的类加载器:
ClassLoaderHelper classloader = sun.misc.Launcher$AppClassLoader@489a44f1
Client classloader = sun.misc.Launcher$AppClassLoader@489a44f1

最佳答案

com.ldbc.driver.db.BasicDb与您导入的内容相比 com.ldbc.driver.db.basic.BasicDb
您使用错误的包名称为 BasicDb 启动了您的应用程序,作为应用程序参数。

java -cp core/target/core-0.1.jar:distribution/target/ldbc-driver-0.1.tar.gz com.ldbc.driver.Client -db com.ldbc.driver.db.BasicDb

关于java - ClassNotFoundException 但类位于类路径和同一个 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16716835/

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