zoukankan      html  css  js  c++  java
  • 将Java程序打jar包并运行

    1)接着上篇博客继续说手动编译之后,将代码打成jar包,然后直接“java -jar lz.jar"运行不成功的问题。还是先上代码:

    这个是Demo类:

    package org.lz.demo.a ;
    public class Demo{
        public String getContent(){
            return "oh,yeah,done!" ;
        }
    };

    接下来,这个是调用了Demo类的ImportDemo类,并且这两个类不在一个包中:

    package org.lz.demo.b ;    // 定义一个包
    import org.lz.demo.a.Demo;
    public class ImportDemo{
        public static void main(String args[]){
            System.out.println(new Demo().getContent());
        }
    };

    参考上篇博客(http://www.cnblogs.com/lz3018/p/5227502.html)手动编译之后,结果如下:

    jar -cvf lz.jar org

    生成lz.jar包。

    java -jar lz.jar

    提示如下:

    这是因为jar包中的META-INFMANIFEST.MF中没有添加Main-Class属性(Main-Class:之后紧跟一个空格,然后再输入(org.lz.demo.b.ImportDemo

    ),也就是主类,添加之后此文件内容是:

    Manifest-Version: 1.0
    Created-By: 1.8.0_60 (Oracle Corporation)
    Main-Class: org.lz.demo.b.ImportDemo

    然后使用这个清单文件,重新生成jar包,将修改后的MANIFEST.MF拷贝,与org在同一个目录下,然后使用如下命令重新生成jar包:

    jar cfm lz.jar MANIFEST.MF org( jar cfm [jar 文件名] [附加清单文件名] [导入文件])

    然后,再执行:

    java -jar lz.jar;

    程序成功运行。截图如下:

    参考:http://zh.wikihow.com/%E8%BF%90%E8%A1%8C.jar%E5%BD%A2%E5%BC%8F%E7%9A%84Java%E7%A8%8B%E5%BA%8F

    2)但是,如果Demo类和ImportDemo类都引用了第三方的jar包,再按照这个方法就会提示找不到所引用的第三方库,这就是classloader没有加载成功的原因,具体提示如下:

    解决方法,同样是修改MANIFEST.MF清单文件的内容,添加“Class-Path”属性。添加后的内容如下:

    Manifest-Version: 1.0
    Created-By: 1.8.0_60 (Oracle Corporation)
    Main-Class: lz.src.gauss.gauss
    Class-Path: libjmatio.jar libjblas-1.2.4.jar 

    嗯嗯,将引用的两个库的相对路径作为“Class-Path”的值(:号紧跟一个空格)如果有多个引用库,彼此以空格隔开。然后再使用这个清单文件重新生成jar包

    jar cfm lzSRC.jar MANIFEST.MF lz

    然后 java  -jar lzSRC.jar

    程序成功运行,如下所示:

    以上是参考(http://www.cnblogs.com/adolfmc/archive/2012/10/07/2713562.html)中,第三种方法。

  • 相关阅读:
    go并发和并行
    goroutine
    go并发
    wampserver配置问题
    获取字符串的长度
    mysql中事件失效如何解决
    Go语言中Goroutine与线程的区别
    Mosquitto服务器的日志分析
    phpexcel导出数据 出现Formula Error的解决方案
    Centos6.X 手动升级gcc
  • 原文地址:https://www.cnblogs.com/lz3018/p/5228639.html
Copyright © 2011-2022 走看看