Apache POI 升级版本
以下是在不使用Maven等库管理工具的情况下进行Apache POI版本升级的工作备忘录。
只需要提供一个汉语翻译选项:
– 先决条件 jué
-
- バージョンアップ前のPOI:3.0.2
-
- バージョンアップ後のPOI:4.1.2
-
- javaのバージョン:8
- IDE:eclipce(4.4.2)
升级前的版本
这次的处理内容并不是很重要,所以我写了一个简单的程序来读取在Excel中写好的内容并输出到控制台。
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class Test1 {
public static void main(String[] args) {
try {
//Excelのワークブックを読み込みます。
POIFSFileSystem filein = new POIFSFileSystem
(new FileInputStream("C:\\poi_test\\test.xls"));
HSSFWorkbook wb = new HSSFWorkbook(filein);
//シートから読み込みます。
HSSFSheet sheet = wb.getSheet("test");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
String readText = cell.getStringCellValue();
//Excelから読み込んだ結果を出力します。
System.out.println(readText);
System.out.println("処理が終了しました。");
} catch (Exception e) {
System.out.println("処理が失敗しました");
}
}
}
目前为止,我们已经确认它正常运作。
升级版本
我们将升级POI的版本。
从构建路径中删除旧版本
右键单击eclipse项目 = >构建路径 = >构建路径配置
因为在现在使用的库版本(3.0.2)中已经记录了路径,所以将这三个都移除。
安装新版本
请从这里下载新版本的POI并进行解压安装,然后将其放置在任意目录下。
让新版本的构建路径通过
再次在eclipse中右键单击项目,选择“构建路径”-“配置构建路径”,然后将新版本的POI构建路径添加进去。
从刚才解压POI的目录中参考以下网站,选择以下4个jar文件。
-
- poi-4.1.2.jar
-
- poi-ooxml-4.1.2.jar
-
- poi-ooxml-schemas-4.1.2.jar
- ooxml-lib\xmlbeans-3.1.0.jar
确认动作
当运行程序时,会出现构建错误。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils
at org.apache.poi.poifs.property.RootProperty.setSize(RootProperty.java:59)
at org.apache.poi.poifs.property.DirectoryProperty.<init>(DirectoryProperty.java:52)
at org.apache.poi.poifs.property.RootProperty.<init>(RootProperty.java:31)
at org.apache.poi.poifs.property.PropertyTable.<init>(PropertyTable.java:58)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:102)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:274)
at Test1.main(Test1.java:16)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils
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)
... 7 more
根据错误消息java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils来推测,很可能是缺少了apache库。
让我们检查一下下载的新apache目录。
在lib文件夹下发现了一个名为commons-math3.jar的文件。
如果将该jar文件添加到构建路径中,问题似乎能够解决。
在安装或升级库的时候,我们通常会通过网络收集相关参考信息。然而,网络文章往往只介绍基本内容,我们需要仔细思考是否适用于自己的环境。在这种情况下,只要冷静地查看错误信息,就能知道错误所在,即使遇到不明错误,也要保持冷静,尽量通过搜索错误信息进行处理。