【问题标题】:why am i getting dbunit noclassdeffounderror databaseconnection?为什么我得到 dbunit noclassdeffounderror 数据库连接?
【发布时间】:2014-11-26 07:54:04
【问题描述】:

在我的 junit 测试类的辅助类中,我创建了一个从 dbunit 到我的 h2databaseconnection 的新 DataBaseconnection:

IDatabaseConnection dBUnitConnection = new DatabaseConnection(h2con);

并尝试在我的类路径中使用“dbunit-2.5.0.jar”运行它,我收到以下错误消息:

java.lang.NoClassDefFoundError: Could not initialize class org.dbunit.database.DatabaseConnection

我不知道出了什么问题。我用eclipse编译并运行它,但我想从命令行运行junit测试,所以我尝试了

java -cp ".;./../libs/*;./libs/dbunit-2.5.0.jar;" org.junit.runner.junitcore testclass

应该可以工作...

【问题讨论】:

    标签: java database-connection noclassdeffounderror dbunit


    【解决方案1】:

    您的类路径可能不完整,看起来您的数据库驱动程序 jar 丢失了。 (NoClassDefFoundError 也可能由初始化类时的问题引起,例如异常,这与 ClassNotFoundException 不同)。

    对照 Eclipse 中的 Java 构建路径检查您的类路径。

    编辑:

    移动了我的评论,指出了答案的真正原因:

    查看org.dbunit.database.DatabaseConnection 的来源,也可能是缺少 slf4j jar。 dbunit 使用 slf4j 进行日志记录,并在 DatabaseConnection 初始化时尝试初始化 slf4j 类。

    【讨论】:

    • 我会尝试,但dbunit-2.5.0.jar 不应该至少解决数据库连接问题吗?
    • 查看org.dbunit.database.DatabaseConnection的来源,也可能是缺少slf4j jar。 dbunit 使用 slf4j 进行日志记录,并在 DatabaseConnection 初始化时尝试初始化 slf4j 类。
    • 我用的是log4j-over-slf4j-1.7.5.jar,会不会有问题?
    【解决方案2】:

    从类路径定义中删除双引号:

    java -cp .;./libs/dbunit-2.5.0.jar org.junit.runner.junitcore testclass
    

    【讨论】:

    • 试过但没有改变
    • @MidgarZolom 您在基于 Windows 或 ix 的系统上运行吗? libs 文件夹存在于您的实际工作目录中,它包含 jar?
    • 我目前在windows下运行
    • @MidgarZolom libs 文件夹存在于您的实际工作目录中,它包含 jar?
    • 我的 libs 文件夹中有所有 jars 我的实际工作目录是 /server/bin,libs 文件夹是 /server/libs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多