NoClassDefFoundError:用Maven打包程序后org/apache/poi/ss/usermodel/Cell

问题描述 投票:0回答:3

我编写了一个从 Excel 读取文本的 Java 程序。所以,我导入了一些像这样的jar:

poi-3.10-beta2-20130904.jar
poi-ooxml-3.10-beta2-20130904.jar
等,我可以在Eclipse中正确运行程序。但是当我用Maven把这个程序打包到目录(
C:\workspace2\change\bin
)
,

我用这样的命令运行这个程序:

C:\workspace2\change\bin>java GenerateVar

出现这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell
    at GenerateVar.execute(GenerateVar.java:59)
    at GenerateVar.main(GenerateVar.java:25)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Cell
    at java.net.URLClassLoader$1.run(Unknown Source)
    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)
    ... 2 more
java eclipse maven apache-poi
3个回答
0
投票

您需要为程序中使用的所有其他 jar/类指定类路径。 例如。 在java类路径中设置多个jar


0
投票

当您在控制台中从 eclipse 运行它时,有一个可用于运行项目的命令,您可以将其从控制台复制/粘贴到命令行。

在命令

java GenerateVar
中,您没有设置
-cp
选项。使用此选项,命令行将如下所示

java -cp poi-3.10-beta2-20130904.jar poi-ooxml-3.10-beta2-20130904.jar ... GenerateVar

假设库位于当前目录中。

如何使用 Maven 插件向项目添加依赖项并构建 jar,您可以在here找到。

如果您想手动修改manifest.mf,另请参阅

this
答案。


0
投票

结束了,我改变了做我想做的事情的方式。我使用的是eclipse插件fat jar来打包程序

© www.soinside.com 2019 - 2024. All rights reserved.