以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. .NET开发知识体系

    记得几年前写过一篇关于.NET开发方面的知识总结,但是随着技术的发展以及自己技术理解的提升,觉得有必要对那篇文章加以更新和完善. 最近在园子里也看到有人写关于.NET知识体系的文章,特别是灵感之源写的 ...

  2. 让你的WPF程序使用多线程——BackgroundWorker

    在wpf中可以使用许多方法执行异步操作.利用.NET的芳芳就是手动创建一个新的System.Threading.Thread对象,提供一步代码,并使用THread.Start()方法加载代码.这种方法 ...

  3. js基础之事件

    一.event对象 document.onclick=function(ev){ oEvent=event?event:ev;//兼容性写法 alert(oEvent.clientX); alert( ...

  4. 上传项目的更改 info.plist文件

    info.plistOpen AsSource As 添加<key>NSAppTransportSecurity</key>    <dict>        &l ...

  5. P264练习题1.2题

    package 集合; import java.util.*; public class fourteen { public static void main(String[] args) { //1 ...

  6. strstr strchr strrchr

    通过函数的定义来区分: 1.strstr: 返回子串出现的第一次位置 char *strstr(const char *haystack, const char *needle) 可见,strstr函 ...

  7. bzoj 3529 数表 莫比乌斯反演+树状数组

    题目大意: 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. ...

  8. zoj 2112 动态区间求第k大

    题目大意: 动态单点更新,然后多次询问求区间内第k大 这里单个的主席树不能实现,这里采取的是树状数组套主席树 首先可以想的是将静态主席树先构建好,不去动它,这里空间复杂度就是O(nlogn),这个只要 ...

  9. CSU1022

    题目: blue和AutoGerk是好朋友.他们的相同点是都喜欢研究算法,不同点是AutoGerk已是大牛而blue还是菜鸟.blue经常拿一些自以为很难的问题去问AutoGerk,想难倒他,但是每次 ...

  10. vmware 下的linux的host only上网配置

    1.首先在Vm中将网络设置为Host-only. 2.在windows下,打开网络邻居,会见到如下界面,其中负责联网的是本地连接,Vm1是host-only连接,VM2是Nat连接方式,首先将VM1. ...