运行Eclipse导出的jar时"找不到主类"错误

sca*_*ity 27 java eclipse swing jar executable-jar

我有一个java项目,从Eclipse中运行它时可以正常工作.当我尝试将其导出到a "JAR file""Runnable JAR file".jar文件时创建,但是当我双击它以尝试运行该程序时,它会给我一个错误

"Could not find the main class: package.MainClassName. Program will exit."
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,我尝试导出到两个JAR选项,我指定了main方法所在的正确类,当我查看文件中的实际文件时,.jar一切似乎都是有序的 - 清单看起来像:

Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)
Run Code Online (Sandbox Code Playgroud)

并在META-INF文件夹中.我的包名称有一个文件夹,其中包含所有.class文件,包括包含main方法的类.我使用的一些图像和文本文件也出现在jar文件中.

实际的程序并不是太复杂 - 它是一个使用Swing的简单"蛇"游戏(加上代码在Eclipse内部运行时都有效).

是什么原因造成了这个错误以及我如何解决它?如果我应该提供任何其他信息,请告诉我.

And*_*s_D 24

验证您是否可以像这样启动您的应用程序:

java -cp myjarfile.jar snake.Controller
Run Code Online (Sandbox Code Playgroud)

我只是在双击它时阅读- 这听起来像是操作系统的配置问题.您是否在Windows资源管理器窗口中双击该文件?尝试使用该命令从控制台/终端运行它

java -jar myjarfile.jar
Run Code Online (Sandbox Code Playgroud)

进一步阅读


清单必须以新行结束.请检查您的文件,缺少新行会造成麻烦.


sca*_*ity 6

好的,所以我终于开始工作了.如果我使用JRE 6而不是7,一切都很好.不知道为什么,但它的确有效.

  • 啊哈,有版本冲突,你的eclipse使用的是更高版本,然后是classpath上的那个。大多数时候都会发生。 (2认同)

Mob*_*Mon 6

在命令行上运行它:

java -jar /path/to/your/jar/jarFile.jar
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,忘记了“jar”前面的“-” (2认同)

nIc*_*cOw 5

您是否尝试手动创建.jar文件而不是使用Eclipse.请尝试以下步骤,希望这可能会有所帮助:

考虑到您的目录结构如下所示:

 TicTacToe(Your Project Name I mean)
 |              |                  |
src            bin             manifest.txt
             |    |
           icons  tictactoe
Run Code Online (Sandbox Code Playgroud)

现在假设我的主类是BeginGame在包内tictactoe,所以我会在manifest.txt文件里写这个东西:

Main-Class: tictactoe.BeginGame
Run Code Online (Sandbox Code Playgroud)

请记住冒号:和包名称之间的空格,即按Enter tictactoe后立即BeginGame保存文件.

现在在你的命令提示符下转到bin文件夹的位置,我正在描述我的一面如下:

C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
Run Code Online (Sandbox Code Playgroud)
  • 这里第一个参数ie ..\tictactoe.jar用于告诉创建tictactoe.jar一级,即内部TicTacToe Folder.
  • 第二个参数..\manifest.txt意味着manifest.txt文件位于一个级别,即内部TicTacToe Folder.
  • 第三和第四个参数tictactoeicons方法,将这两个文件夹添加到.jar文件中,因为它们放在binFolder中,因此它们按原样使用.现在按Enter键.

现在尝试运行你在.Project Folder(TicTacToe文件夹,在我的情况下)内创建的.jar文件.

希望这会奏效.