以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. double int char 数据类型

    贴心的limits... 测试代码: #include <iostream> #include <stdio.h> #include <limits> #inclu ...

  2. mysql启动错误

    1.启动时,显示ERROR tail localhost.localdomain.err 错误日志 2.新增目录,启动成功

  3. LAMP之安装mysql/apache/php

    1. 安装mysqlcd /usr/local/src/ wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-gl ...

  4. 关于职位的解释---转CSDN的文章

    摘要我在IT职场打滚超过15年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 通用法则 法则1:忍耐是 ...

  5. JS引用类型之——RegExp

    前言 之前小猪分享过关于正则表达式的一些内容,具体请看传送门,今天小猪来分享怎么在js中使用正则表达式. 定义 ECMAScript通过RegExp类型来支持正则表达式.使用下面类似Perl的语法,就 ...

  6. 实现js中的重载

    重载是面向对象语言里很重要的一个特性,JS中没有真正的重载,是模拟出来的(因为js是基于对象的编程语言,不是纯面向对象的,它没有真正的多态:如继承.重载.重写) 一.什么时候用重载? 举例: func ...

  7. java中的native方法和修饰符(转)

    Java中的native修饰符 今天偶然看代码,发现别人有这样写的方法,并且jar里面有几个dll文件,比较奇怪,于是把代码打开,发现如下写法. public native String GSMMod ...

  8. 二模 (13)day1

    第一题: 题目大意: N个发射站排成一排,求每个发射站左右第一个比它高的发射站. N<=1000000 解题过程: 1.前几天做poj的时候刚好在discuss里看到有一个神奇的东东叫单调栈,正 ...

  9. 从QQ网站中提取的纯JS省市区三级联动

    在 http://ip.qq.com/ 的网站中有QQ自己的JS省市区三级联动 QQ是使用引用外部JS来实现三级联动的.JS如下:http://ip.qq.com/js/geo.js <!DOC ...

  10. 上次遗留下来的XMLUtil的问题

    ·在上周留下了一个关于XMLUtil的问题,问题大概是这样的,需要通过读取一个XML文件,然后在内存中生成一个对应的javaBean.之前写的那个很是糟糕,照着一个XML去写了一个"Util ...