【发布时间】:2020-05-30 14:27:50
【问题描述】:
我将开发一个工作流,我需要从 Oracle DB 中获取一些数据并将 ResultSet 写入 Excel 文件。在开始之前,我想做一些测试。但是,我收到以下运行时异常 java.lang.NoClassDefFoundError。详细信息可以在下面找到。我知道我错过了一些非常愚蠢的东西,但我正在努力找出它。感谢您的帮助。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
at DatabaseConnPkg.DatabaseConnClass.main(DatabaseConnClass.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
C:\Users\Erfan\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)
这些是我正在使用的外部 jars
poi-4.1.2.jar
poi-ooxml-4.1.2.jar
这是我正在使用的代码
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
ResultSetMetaData resultSetMetaData = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","hr","hr");
String sql = "select * from countries";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
resultSetMetaData = resultSet.getMetaData();
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadSheet = workbook.createSheet();
XSSFRow row = spreadSheet.createRow(1);
XSSFCell cell;
for(int i=0; i<resultSetMetaData.getColumnCount(); i++) {
cell = row.createCell(i);
cell.setCellValue(resultSetMetaData.getColumnName(i));
}
while(resultSet.next()) {
row = spreadSheet.createRow(1);
cell = row.createCell(1);
cell.setCellValue(resultSet.getString(1));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString(2));
cell = row.createCell(3);
cell.setCellValue(resultSet.getString(3));
}
FileOutputStream fileOutputStream = new FileOutputStream(new File(FILE));
workbook.write(fileOutputStream);
fileOutputStream.close();
System.out.println("exceldatabase.xlsx written successfully");
//System.out.println(resultSetMetaData.getColumnName(1) + "\t" + resultSetMetaData.getColumnName(2) + "\t" + resultSetMetaData.getColumnName(3));
/*
while(resultSet.next()) {
System.out.println(resultSet.getString(1) + "\t\t" + resultSet.getString(2) + "\t\t" + resultSet.getString(3));
}
*/
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
你应该使用像 Maven 或 Gradle 这样的依赖管理工具来为你处理这个问题,否则make sure you add all the dependencies listed on the Apache POI website to your project
标签: java apache-poi