java - jar执行错误: could not find or load main class xxx

标签 java jar apache-poi

我已经编译并执行了使用 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/

相关文章:

java - 如何检索JSP中的内容/文件?

java - 如何在我的 Activity 中显示带有说明的透明图像?

java - 如何使用循环从特定的 ArrayList 行获取数据?

javascript - 使用 java/javascript 和 apache POI 导出 .xls 文件时文件损坏

java - 如何在java xssf poi中移动列

java - 如何在 slf4j 中只显示标记的日志?

java - 是否可以在不使用命令行的情况下在 jar 文件中打开控制台?

java - 如何使用相同的字符串在 IDE 和 .jar 中加载资源

java - 无法使用 Eclipse 将文件夹从项目导出到 jar

java - 动态添加外部(跨工作簿)引用