gpt4 book ai didi

java - 使用 DBunit 导出数据库时出错 "java.lang.NoClassDefFoundError: org/dbunit/database/IDatabaseConnection"

转载 作者:行者123 更新时间:2023-11-29 07:21:07 32 4
gpt4 key购买 nike

我有以下 java 代码,它给出了以下错误:

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;

public class export {
public static void main(String[] args) throws Exception {
// database connection
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection jdbcConnection = DriverManager.getConnection(
"jdbc:jtds:sqlserver://localhost:1433/exampleDB", "sa", "vista1");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));
}
}

错误:

$ java 导出

Exception in thread "main" java.lang.NoClassDefFoundError: org/dbunit/database/IDatabaseConnection
Caused by: java.lang.ClassNotFoundException: org.dbunit.database.IDatabaseConnection
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: export. Program will exit.

正在编译的 java 文件的名称是 export.java,编译文件的名称是 export.class,我已经把 dbunit-2.4.8.jarjtds-1.2.5.jar 文件到与 export.javaexport.class 相同的文件夹中;我正在使用以下命令编译 export.java:

$ javac -cp "dbunit-2.4.8.jar;jtds-1.2.5.jar" export.java

知道我做错了什么吗?

最佳答案

我有这个问题,但是使用 maven (m2eclipse) 并从 Eclipse 中运行它。当我从 dbunit 依赖项中删除 scope=test 时,我的问题得到解决。

我也试过从控制台运行,使用 javac 和 java,就像你做的那样,但得到了同样的错误。一定是因为我们忘记将某些依赖项包含在类路径中。我们只需要编译dbunit.jar,但是dbunit类要依赖其他的东西才能真正运行,所以我们需要在运行时把其他的jar放在类路径下(例如slf4j)。

从 Eclispe 内部成功运行时,这是我的依赖项:slf4j-api-1.6.1.jarslf4j-log4j12-1.6.1.jarlog4j-1.2.16.jarojdbc6-11.1.0.6.0.jar(使用oracle)dbunit-2.4.8.jarjunit-3.8.2.jarcommons-collections-3.2.1.jar

尝试将它们全部放在类路径中,看看是否可行。

关于错误消息.. 尽管它说“找不到主类:导出。程序将退出。',这不是真的。它确实找到了主类,在我注释掉第二行之后的所有行后,我可以调试执行。仅当我导入 org.dbunit.database.DatabaseConnection 时才会出现问题。我相信,当导入此类时,主类会尝试加载 DatabaseConnection,它会尝试加载不在类路径中的内容。所以 java 给出了误导性的错误信息。

关于java - 使用 DBunit 导出数据库时出错 "java.lang.NoClassDefFoundError: org/dbunit/database/IDatabaseConnection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4371104/

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