zoukankan      html  css  js  c++  java
  • 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:Javajdk1.8.0_11(你自己jdk的安装环境)
        Path是 %JAVA_HOME%in;%JAVA_HOME%jrein
        CLASSPATH是 .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.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

  • 相关阅读:
    Linux系统下mysql修改密码遇到的问题
    Description: Field ud in com.yjj.service.impl.UserServiceImpl required a bean of type 'com.yjj.dao.UserDao' that could not be found. Action: Consider defining a bean of type 'com.yjj.dao.UserDao'
    地址的三级联动(jQuery+servlet)
    人生苦短,我用Python(目录)
    数据库增量同步
    并发编程
    Python Web 之 Flask
    jQuery 选择器
    常见性能优化方法的一些总结
    常见的浏览器兼容性问题总结
  • 原文地址:https://www.cnblogs.com/not-NULL/p/5024893.html
Copyright © 2011-2022 走看看