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)
进一步阅读
清单必须以新行结束.请检查您的文件,缺少新行会造成麻烦.
好的,所以我终于开始工作了.如果我使用JRE 6而不是7,一切都很好.不知道为什么,但它的确有效.
在命令行上运行它:
java -jar /path/to/your/jar/jarFile.jar
Run Code Online (Sandbox Code Playgroud)
您是否尝试手动创建.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)
..\tictactoe.jar用于告诉创建tictactoe.jar一级,即内部TicTacToe Folder...\manifest.txt意味着manifest.txt文件位于一个级别,即内部TicTacToe Folder.tictactoe和icons方法,将这两个文件夹添加到.jar文件中,因为它们放在binFolder中,因此它们按原样使用.现在按Enter键.现在尝试运行你在.Project Folder(TicTacToe文件夹,在我的情况下)内创建的.jar文件.
希望这会奏效.