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-INF\MANIFEST.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: lib\jmatio.jar lib\jblas-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)中,第三种方法。

转载于:https://www.cnblogs.com/lz3018/p/5228639.html

将Java程序打jar包并运行相关推荐

  1. “java程序打成jar包 如何处理第三方jar包”

    eclipse的export的 runnable jar file 导出的jar包的形式应该可以避免这个问题,直接想所依赖的jar里的class文件也一并打入jar包里了. 问题一: 现在有一j2se ...

  2. idea中java程序打jar包的两种方式(超详细)

    java程序打成的jar包有两种类型,一种是可直接执行的runnable jar文件,另一种是包含多个主类,运行时需要指定主类全类名的jar包,下面我们细说在idea中两种jar包的打包方法及执行ja ...

  3. Eclipse中将java类打成jar包形式运行

    记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...

  4. Android系统运行Java程序执行jar包(2-包含spring框架)

    前言 上一篇文章中,通过把jar转换为安卓系统可以执行的dex文件,从而运行java程序,但这种方法只不适用于复杂的框架. 为了运行更为复杂的java程序,我在安卓设备上安装了linux虚拟机,在虚拟 ...

  5. java程序加密jar包及war包加密

    加密锁加密java web项目中的 war包(或class文件)的演示 1. 启动外壳加密工具:Envelope 2. 选择自己的正式开发号(测试用户跳过此步骤) 3. 点击"程序" ...

  6. linux运行java程序引用jar包,ubuntu下java 命令行引用jar包的方法

    推荐文章 Ubuntu常用快捷键总结 桌面常用快捷键 Alt + F1:聚焦到桌面左侧任务导航栏,可按上下键进行导航 Alt + F2:运行命令 Alt + F4:关闭当前窗口 Alt + Tab:切 ...

  7. Idea java 程序打jar包(maven)

    1.准备好控制台程序 2.引用的项目打包(公共类接口) 3.开发打包 点击运行 打包结果如下 转载于:https://www.cnblogs.com/lijiasnong/p/9186096.html

  8. linux jar 运行 停止,[转] Linux中启动和停止jar包的运行

    脚本一: startTest.sh内容如下: #!/bin/sh java -jar Test.jar &       #注意:必须有&让其后台执行,否则没有pid生成 echo $! ...

  9. Linux运行hadoop命令,将hadoop程序打成jar包,在linux下以命令行方式运行(例如单词计算程序)...

    自定义Mapper import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.ha ...

最新文章

  1. swift-video-generator:图片加音频生成视频及多视频合并库及演示
  2. 数据库基础笔记(MySQL)7 —— 存储引擎和视图 ( 完结撒花 )
  3. 十分钟读懂『卡尔曼滤波算法』
  4. Java Collections CheckedCollection()方法与示例
  5. server2003 IIS 错误 解决
  6. 港中文等提出:开放世界实体分割
  7. spring boot访问templates目录下的html静态页面
  8. 功能表单之智能选择字段类型的使用——JEPLUS软件快速开发平台
  9. linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
  10. Android 插件化框架replugin replugin-host-library 源码解析
  11. 仿支付宝输入密码效果
  12. 0基础python笔记str/list/tuple/dict
  13. 【数字图像处理】【个人入门记录】 绪论
  14. scp 保留文件属组_scp传输文件的权限问题
  15. 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)
  16. 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)
  17. 二、Node 多版本管理
  18. cdr保存的内容计算机搜不到,CorelDRAW自动保存的文件在哪里?
  19. 2021米哈游校园招聘-提前批-编程题1-最简分式
  20. Unity编辑视图中相机没了?你可能不小心碰到了它

热门文章

  1. JavaScript从入门到精通[文章列表联接]
  2. 现代C++函数式编程
  3. 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)
  4. 前景检测算法_1(codebook和平均背景法)
  5. 即将上线的flume服务器面临的一系列填坑笔记
  6. jQuery 选择器和筛选器
  7. ***测试之情报收集
  8. 基于多种转换语义的图数据库查询
  9. Sum All Numbers in a Range
  10. javascript闭包-全局变量与局部变量