`

运行jar包时提示 Failed to load Main-Class manifest attribute from.

    博客分类:
  • Java
阅读更多
今天调式程序时出现这样的错误提示,在网上搜了下,找到下面的文章,问题解决,就是MANI-FEST.MF文件结尾少了一个 回车换行,导致文件不可识别,转帖中是manifest.txt,起的作用和MANI-FEST.MF一样。

http://blog.163.com/cjh7770996@126/blog/static/2246189220093289548548/

今天看HeadFirst的Java看到了第17章“发布程序”,本来还以为蛮简单的,当亲自上机实验,以包去创建可执行的jar时就出现问题了。

  首先我手工建立好我的工程MyProject,其实就是建立一个名为MyProject的文件夹,然后在该文件夹下再创建source文件夹,然后就是你喜欢的包名,我地是com.jo 那么就是在source下再创建com文件夹,com下再创建jo文件夹,然后就是我地源文件了,我建一个名为Test.java的源文件,然后简单的写下一下代码做测试:

------------------------------------------------------------------------------

package com.jo;

public class Test {
 public static void main(String args[]){
  System.out.println("Testing");
 }
}


--------------------------------------------------------------------------------

  OK,然后就运行CMD(我的操作系统是windows当然就是CMD了,而且我已经配置好我的java环境变量了)。进入到工程文件下的source文件夹:

cd MyProject/source

  接着就是编译文件,我采用了书中所建议的文件组织方式,就是源代码放在source文件夹中,然后编译过的文件就放在classes文件夹中

javac -d ../classes com/jo/Test.java (编译此目录下的所有源文件则输入:javac -d ../classes com/jo/*.java)

  书中提到如果还没有建立好对应的输出目录结构,只要加上-d,编译器会自动建立相应的目录结构,但起码要建立"classes"文件夹。

  然后要执行程序就需要进入到classes目录下,运行:

java com.jo.Test

  运行顺利的话就会在命令提示符下看到Testing.

  接着就是以包来创建可执行的jar

  步骤一:

  确认所有的类文件都在classes目录下,并且对应的包结构都正确。

  步骤二:

  创建manifest.txt文件来描述哪个类带有main(),以及确认有使用完整的类名称

  在manifest.txt中写入一行:

  Main-Class: com.jo.Test

  然后把manifest.txt文件放入classes目录下

注:这里代码最后一定要加入换行符,就是回车。否则打包的时候是可以通过,但是无法识别的,最后执行jar文件的时候会提示:Failed to load Main-Class manifest attribute from ...虽然现在我们编程的时候大多时候都会用到IDE,但这是基础,我个人认为有必要去了解。

  最后命令提示符里进入到classes目录,

  cd MyProject/classes

  然后打包:

  jar -cvmf manifest.txt myjar.jar com

  关于jar后的参数,如果是有Unix或Linux经验的话,估计是很了解的,然后最后的那个com,是指定目录之用,无需是完整的。

  最后的最后,当我们需要执行这个jar文件的时候,就输入:

java -jar myjar.jar
分享到:
评论
1 楼 zjsrustar 2012-02-01  
  步骤二:

  创建manifest.txt文件来描述哪个类带有main(),以及确认有使用完整的类名称

  在manifest.txt中写入一行:

  Main-Class: com.jo.Test

Main-Class: 空格+类名  浪费了一点时间的

相关推荐

Global site tag (gtag.js) - Google Analytics