无法从命令行运行jar文件:“没有主清单属性”

38

我正在尝试从控制台运行一个jar文件:

java -jar ScrumTimeCaptureMaintenence.jar

我遇到了以下错误:

无法执行jar文件:“no main manifest attribute”

正如您所看到的,我确实有一个主文件,并且从eclipse中运行得很好:

main method is in class

我需要怎么做才能成功地从命令行运行此文件?


3
您需要一个包含“Main”条目的“manifest”文件。 - Sotirios Delimanolis
在Eclipse中是否有一种方法可以在JAR导出时生成一个JAR文件? - David Tunnell
3
如果你将代码导出为可执行 JAR 文件,它会自动为你创建清单文件。 - RamonBoza
2
如果您按步骤运行导出向导,应该会有一个指定“Main”类的选项。 - Sotirios Delimanolis
8个回答

47

尝试运行

java -cp ScrumTimeCaptureMaintenence.jar Main

9
如果你的类名是"Main",包名为"com.mycompay",则命令应该如下: java -cp /the_jar_file_path/the_jar_file.jar com.mycompay.Main - Henry
2
当我运行它时,它显示“Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError:Path”,有什么原因吗? - Dipesh Raichana

29
在Eclipse中:右键单击您的项目->导出->JAR文件
在选项的最后一页(当没有下一步按钮处于活动状态时),您将看到Main class:的设置。您需要在此处设置具有默认执行main方法的类(例如,当双击JAR文件时)。

2
找了好久,谢谢! - Justin

19

-jar选项仅在JAR文件为可执行JAR文件时有效,这意味着它必须具有包含Main-Class属性的清单文件。

如果它不是可执行JAR文件,则需要使用类似以下命令运行程序:

java -cp app.jar com.somepackage.SomeClass

其中com.somepackage.SomeClass是包含main方法以运行程序的类。


啊,经过四个小时的奋斗:在2022年可用。 - Noor Hossain
1
很高兴能帮到你!我记得我发布这个答案是因为在找到它之前,我也苦苦挣扎了数小时。 - spacewanderer

7

点击“导出”后,您可以选择“可运行的JAR文件”。

您可以在“启动配置”中指定主驱动程序。

输入图像描述 输入图像描述


7

首先从eclipse中运行你的应用程序来创建启动配置。然后按照以下步骤操作:

  1. 从菜单栏的文件(File)菜单中,选择导出(Export)
  2. 展开Java节点并选择可运行的JAR文件(Runnable JAR file)。点击下一步(Next)
  3. Runnable JAR File Specification页面中,选择要使用的“Java Application”启动配置以创建可运行的JAR。
  4. Export destination字段中,输入或点击浏览(Browse)选择JAR文件的位置。
  5. 选择适当的库处理(library handling)策略。
  6. 可选地,您还可以创建一个ANT脚本来快速重新生成先前创建的可运行JAR文件。

来源:在Eclipse.org上创建新的可运行JAR文件


4
将您的Java项目导出为可运行的Jar文件,而不是普通的Jar文件。
我将我的项目导出为Jar文件,即使清单文件存在,它仍然给了我一个错误:“在jar中没有主清单属性”,尽管清单文件存在于Jar文件中。然而,在清单文件中只有一个条目,并没有指定要执行的主类或函数,也没有任何依赖的JAR文件。
将其导出为可运行的Jar文件后,它按预期工作。

1
我也遇到了同样的问题 - 添加清单文件没有帮助。可运行的JAR文件可以解决。+1 - Gangnus

2

你需要在Jar的Manifest.mf文件中包含“Main class”属性。

例如:Main-Class: MyClassName

其次,要将清单文件添加到您的jar中,您可以在工作区文件夹中手动创建文件,并在Eclipse项目资源管理器中刷新。

在导出时,Eclipse将创建一个包含清单的Jar文件。

干杯!


0
如果您正在使用Spring Boot,应该在您的pom.xml中添加此插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接