java - 共享可执行 .jar 文件

java - Sharing an executable .jar file

我用 NetBeans 编写了一个程序,现在想与同事分享。但是,当他尝试 运行 在他的计算机上安装它时,他收到一条错误消息:

"Could not find the main class: excelcomparator.ExcelComparator. Program will exit."

这是令人困惑的部分:我在装有 NetBeans 的笔记本电脑上写了这篇文章,为了确保它能正常工作,将 dist 文件夹复制到闪存驱动器上,然后 运行 它在我的电脑。它运作良好。当我通过电子邮件将它发送给我的同事时,他收到了那个错误。

根据我所见,一些解决方案是从命令行 运行 .jar。虽然这可能有效,但我需要文件可以双击。

我通过电子邮件将压缩文件夹中的文件发送给我的同事,解压缩整个文件夹是否也弄乱了 .jar 文件(不明白为什么会这样,但包含了可能有帮助的任何内容)?

这是 .jar 文件中的 MANIFEST.mf。文件末尾有一个回车符return,只是不能很好地复制到这个文本框中:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.7.0_71-b14 (Oracle Corporation)
Class-Path: lib/poi-3.12-20150511.jar lib/poi-examples-3.12-20150511.j
 ar lib/poi-excelant-3.12-20150511.jar lib/poi-ooxml-3.12-20150511.jar
  lib/poi-ooxml-schemas-3.12-20150511.jar lib/poi-scratchpad-3.12-2015
 0511.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: excelcomparator.ExcelComparator

我发送了 dist 文件夹,其中包含 lib 文件夹,其中包含所有额外的 .jars。

如果我需要包含任何其他相关信息,请告诉我。谢谢!

如果您希望 JAR 可以双击,那么您应该将所有依赖项捆绑到一个 JAR 文件中。

您使用 maven 程序集插件实现此目的:http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

如果您不知道如何使用 Maven,Eclipse 有一个很好的向导。我不确定它在 NetBeans 上是如何工作的,但同样的问题已经被问过很多次,例如这里Netbeans Export to Jar, include all library files

为了完成这篇文章,我将写下对我有用的内容:

根据 Franz Becker 的建议 based on this question,我将整个程序捆绑到一个 .jar 文件中。

我在同事的计算机上仍然遇到同样的错误,因此根据我看到的其他建议,我猜测问题是由于我们计算机上安装的 Java 版本不同所致。我所做的是将程序重新编译为 Java 的早期版本,它适用于从那时起的任何版本(其他人建议在用户计算机上重新安装 Java。这在大多数情况下有点太不现实了).

更改合规性级别(在 Eclipse 中):右键单击包资源管理器中的项目,select 属性。在左侧的选项中选择 Java Compiler。取消选中“在 'Java Build Path' 上使用来自执行环境 [默认目标 JavaSE] 的合规性”,并将 'Compiler compliance level' 更改为您选择的级别(我选择了可​​用的最低选项 1.3,因为我假设高于此值的任何值都不是问题)。

然后我导出文件(文件 -> 属性 -> Java -> 可运行的 JAR 文件),并且有一个工作的、可点击的 .jar。

感谢大家的帮助!