我已经编译并执行了使用 apache-poi 中的外部库文件的 java 代码,该代码从 Excel 电子表格中读取字符串并显示它,但是当我尝试制作可执行 jar 文件并打开它时,命令提示符给出了消息 - 无法找到或加载主类
。(双击 jar 文件不会打开 jar 文件)
我在编写 MANIFEST.MF
文件时非常小心,将换行符放在末尾并按正确的顺序添加 header (Oracle 文档),其内容是 -
Manifest-Version: 1.0
Class-Path: . C:\poi-3.12\poi-3.12-20150511.jar C:\poi-3.12\poi-ooxml-
3.12-20150511.jar C:\poi-3.12\poi-ooxml-schemas-3.12-20150511.jar C:\
poi-3.12\ooxml-lib\xmlbeans-2.6.0.jar
Created-By: 1.8.0_45 (Oracle Corporation)
Main-Class: testfrpn
其中 testfrpn
是包含 main()
(入口点)的类。虽然 stackoverflow(以及其他地方)上有该问题的解决方案,但没有一个对我有用,最常见的解决方案是以正确的顺序执行 jar -cvfm xxx.jar xxx.txt
。
需要注意的是,代码执行得很好(java xxx),当我执行.jar文件(通过命令提示符创建)时出现问题。
老实说,我已经花了太多的时间和太多的事情来克服这个问题,但都失败了,所以如果有人能帮助我,那就太好了。
最佳答案
如果它是可执行 jar,则 MANIFEST.MF
文件应如下所示:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: JerryZhang
Build-Jdk: 1.6.0_25
Main-Class: com.company.department.SampleClassName
Class-Path: lib/poi-3.10-FINAL.jar lib/commons-codec-1.5.jar lib/poi-o
oxml-3.8-beta4.jar lib/poi-ooxml-schemas-3.8-beta4.jar lib/xmlbeans-2
.3.0.jar lib/stax-api-1.0.1.jar lib/dom4j-1.6.1.jar lib/xml-apis-1.0.
b2.jar lib/sshj-0.8.1.jar lib/slf4j-api-1.6.1.jar lib/commons-cli-1.2
.jar lib/logback-classic-1.0.13.jar lib/logback-core-1.0.13.jar
重要的一行是:
Main-Class: com.company.department.SampleClassName
该值应该包括包名和类名,它告诉JVM哪个类是主类。
使用以下命令执行 xxxx.jar:
java -jar xxxx.jar
关于java - jar执行错误: could not find or load main class xxx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31041158/