java基础篇-jar打包

以helloworld程序为例: 

一:正常流程:

  1.首先编写一个hello.java的程序:   

  public class Hello {
    public static void main(String[] args) {
      System.out.println("hello world!");
    }
  }

  保存到C:/temp 目录下。 

  2.编译:hello.java   

  cd C:/temp
  javac hello.java

  在C:/temp目录下则会多出一个hello.class文件。(此时如果输入命令:java hello。则会出现hello world的结果。程序运行成功)。

  

  3.打包step1:

  //将多个类文件归档到一个名为hellojar.jar的档案中(可以在末尾添加多个文件,以空格分隔)
  jar cvf hellojar.jar hello.class

  

  4.修改jar包里面的MANIFEST清单:

    加入:

  //主程序的main入口所在的类,其值为该类的完整路径。
  Main-class: Hello

  并将该文件拷贝到temp目录下。

  

  5.打包step2:

  //使用现有清单文件“MANIFEST”并 将"hello.class"归档在“hellojar.jar”中:
jar cvfm hellojar.jar MANIFEST.MF hello.class

  

  6.执行jar:

  java -jar hellojar.jar

到这儿简单的helloworld 打包程序就完事了。

当然即使最简单的jar打包也会出现很多问题,特别是对于新手!

现在次列出:

  1. jar打包出现java.io.IOException: invalid header field

    解决:在MANIFEST文件中修改的时候,应注意:      

        1.每个标签冒号后都跟上一个空格

        2.最后一行需要有一个回车键,否则后面那一行是不能打包进去的

        3.注意冒号是否为英文半角。

    补充说明:Manifest技巧

      1.总是以Manifest-Version属性开头
      2.每行最长72个字符,如果超过的话,采用续行
      3.确认每行都以回车键结束,否则改行将会被忽略
      4.如果Class-Pass中存在路径,使用“/”分隔目录,与平台无关
      5.使用空行分隔属性和package属性
      6.使用"/"而不是"."来分隔package和class。比如com/example/myapp/
      7.class要发.class结尾,package要以/结尾

  2.jar执行的时候出现:

   java错误:找不到或无法加载主类:

   这种问题出错的原因有很多,列出常用的几个:

   解决:

     1.首先确定你的jar包里面有hello.class文件!

     2.确定你的程序里有main函数

     3.执行java hello确认是否能够运行,不能运行请参考下面:

     4.检查你的class_path和path环境:    

      HOME是       D:\Java\jdk1.8.0_11(你自己jdk的安装环境)
    Path是 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    CLASSPATH是 .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar      
    
     5.在配置环境变量的时候最好路径中不要含有中文和空格! 参考文章:
  1.http://bbs.csdn.net/topics/380204156
  2.http://zhidao.baidu.com/link?url=EWCI5iWXX_nSPqAtvJ9AqXd_BL8gwnFlg00ByZzhfd3hBxTcHycADGQGWVizYdT5L2AwHEg5OQExpvuSphfu0x0O0ksQrTFwRIBZzbq1UJO
  3.http://jingyan.baidu.com/album/3c48dd344a2146e10be3588c.html
  4.http://jingyan.baidu.com/article/ff42efa904b4d7c19e220282.html
  5.http://blog.csdn.net/gz_xiangjun/article/details/6962818
上一篇:OpenStack Swift集群部署流程与简单使用


下一篇:使用Kindle4rss推送自己感兴趣的博文