以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

java基础篇-jar打包的更多相关文章

  1. 小白—职场之Java基础篇

    java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...

  2. Java基础篇(JVM)——类加载机制

    这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...

  3. java基础篇---I/O技术

    java基础篇---I/O技术   对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...

  4. 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇

    Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...

  5. java基础篇---HTTP协议

    java基础篇---HTTP协议   HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...

  6. java基础篇---I/O技术(三)

    接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...

  7. Java基础篇 - 强引用、弱引用、软引用和虚引用

    Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...

  8. java基础篇 之 构造器内部的多态行为

    java基础篇 之 构造器内部的多态行为 ​ 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...

  9. java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...

随机推荐

  1. CentOS 下的MySQL配置

    先贴出代码(/etc/my.cnf)如下: #The following options will be passed to all MySQL clients [client] #password ...

  2. Oozie简介

    在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起,这样才能够达到目的.[1]在Hadoop生态圈中,有一种相对比较新的组件叫做Oozie[2],它让我们可以把多个Map/R ...

  3. static初始化问题探究

    两个小示例 demo1 package containers; public class TempTest { static{ a= 1; // System.out.println(a); } st ...

  4. autoLyout纯代码适配

    前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...

  5. POJ 3225 Help with Intervals

    U:把区间[l,r]覆盖成1I:把[0,l-1][r+1,∞]覆盖成0D:把区间[l,r]覆盖成0C:把[0,l-1][r+1,∞]覆盖成0 , 且[l,r]区间0/1互换(即异或)S:[l,r]区间 ...

  6. DataGridView绑定数据库,取得的数据插入到DataGridView指定列(一)

    实现: 点击button1,从数据库中获得数据,指定数据库的某列数据插入到DataGridView指定列 一.双击button1进入事件代码 private void button1_Click(ob ...

  7. SuperGridControl 使用小技巧

    1.显示行号 superGridControl1.PrimaryGrid.ShowRowGridIndex = true; 2.允许调整行头的宽度 superGridControl1.PrimaryG ...

  8. tomcat http 文件下载

    tomcat作为http的下载服务器,网上有很多办法 但我认为最简单的是: 1.直接把文件放在 tomcat6/webapps/ROOT 目录下, 2.然后在网址中访问: http://120.194 ...

  9. 升级Xcode6.4插件失效解决办法

    发现安装的插件无效 后各种尝试后终于解决 1.先找到之前装的插件文件夹 前往文件夹:~/Library/Application Support/Developer/Shared/Xcode/Plug- ...

  10. 从协议VersionedProtocol开始4——AdminOperationsProtocol、InterTrackerProtocol、JobSubmissionProtocol、TaskUmbilicalProtocol

    1.package org.apache.hadoop.mapred这四个协议都在这个包下. 2.从最简单的AdminOperationsProtocol看, void refreshQueues() ...