我编写了一个从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
答案 0 :(得分: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。
答案 1 :(得分:0)
您需要为程序中使用的所有其他jar /类指定classpath。 例如。 Setting multiple jars in java classpath
答案 2 :(得分:0)
结束了,我改变了做我想做的事情。我使用fat jar作为eclipse插件来打包程序