eri*_*old 1 java dbunit export jtds jdbc
我有以下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"));
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
$ 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.
Run Code Online (Sandbox Code Playgroud)
java文件被编译的名字是export.java和编译的文件的名称是export.class的,我已经把dbunit-2.4.8.jar和jtds-1.2.5.jar文件到同一文件夹中export.java和export.class; 我正在使用以下cmd编译export.java:
$ javac -cp "dbunit-2.4.8.jar;jtds-1.2.5.jar" export.java
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
我有这个问题,但使用maven(m2eclipse)并从Eclipse内部运行它.当我从dbunit依赖项中删除scope = test时,我的问题得到解决.
我也尝试从控制台运行,使用javac和java,就像你一样,但是得到了同样的错误.它一定是因为我们忘记包含在类路径中的某些依赖项.我们只需要dbunit.jar来编译,但dbunit类依赖于实际运行的其他东西,因此我们需要在运行时将其他jar放在类路径上(例如,slf4j).
当从Eclispe内部成功运行时,以下是我的依赖:slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar log4j-1.2.16.jar ojdbc6-11.1.0.6.0.jar(使用oracle) dbunit-2.4.8.jar junit-3.8.2.jar commons-collections-3.2.1.jar
尝试将它们全部放在类路径上,看看它是否有效.
关于错误消息..尽管它说"无法找到主类:导出.程序将退出.',这不是真的.它确实找到了主类,并且在我在第二行之后注释掉所有行之后我可以调试执行.只有在我导入org.dbunit.database.DatabaseConnection时,问题才会出现.我相信,当导入这个类时,主类会尝试加载DatabaseConnection,它试图加载不在类路径中的东西.所以java给出了误导性的错误信息.
| 归档时间: |
|
| 查看次数: |
4623 次 |
| 最近记录: |