可执行jar文件找不到main

时间:2012-06-19 18:13:36

标签: java apache-poi executable-jar

我见过很多帖子,但我无法找到解决我具体问题的方法。我已经检查了如何从eclipse导出jar的参数,我确信包含main的类被检查为主类(在这个项目中只有一个类)。该程序在日食中运行良好。 我已经使用了一个bat文件尝试运行它,它读取(其中EDT2是jar的名称):

 java -jar EDT2.jar

我查看了清单文件,内容如下:

 Manifest-Version: 1.0
 Sealed: true
 Main-Class: EDTCompiler2

该文件的主要内容为:

    public static void main(String[] args) throws IOException, InvalidFormatException {

错误和命令行调用如下所示:

http://s16.postimage.org/droox00sl/Untitled.png enter image description here

我看到的另一个不寻常的事情是它为第53行提供了一个错误,这是来自外部库的对象声明类型。我在这个程序中使用apache POI for excel。

2 个答案:

答案 0 :(得分:1)

您的主要课程必须是完全合格的名称。

换句话说,如果EDTCompiler2位于package org.apache.whatever;,那么您的JAR文件需要指定Main-Class org.apache.whatever.EDTCompiler2

答案 1 :(得分:0)

Edwin的诊断是正确的:在主类的静态初始值设定项中,您正在加载另一个加载失败的类。抛出NoSuchMethodError并阻止加载主类。因此最后的错误消息。 缺少的方法表示在Eclipse中运行程序时以及在命令行上运行程序时使用的是不同版本的Apache POI库。

要解决此问题,您有两种选择:

  1. 从Eclipse导出JAR时,请选中“将所需库提取到生成的JAR中”选项。这应该是默认选择,但现在似乎不适合你。
  2. 不要将依赖库打包到JAR中,而是在使用-cp选项调用java时将它们添加到类路径中。使用此选项,您必须确保添加正确版本的库。