将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-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包并运行相关推荐
- “java程序打成jar包 如何处理第三方jar包”
eclipse的export的 runnable jar file 导出的jar包的形式应该可以避免这个问题,直接想所依赖的jar里的class文件也一并打入jar包里了. 问题一: 现在有一j2se ...
- idea中java程序打jar包的两种方式(超详细)
java程序打成的jar包有两种类型,一种是可直接执行的runnable jar文件,另一种是包含多个主类,运行时需要指定主类全类名的jar包,下面我们细说在idea中两种jar包的打包方法及执行ja ...
- Eclipse中将java类打成jar包形式运行
记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...
- Android系统运行Java程序执行jar包(2-包含spring框架)
前言 上一篇文章中,通过把jar转换为安卓系统可以执行的dex文件,从而运行java程序,但这种方法只不适用于复杂的框架. 为了运行更为复杂的java程序,我在安卓设备上安装了linux虚拟机,在虚拟 ...
- java程序加密jar包及war包加密
加密锁加密java web项目中的 war包(或class文件)的演示 1. 启动外壳加密工具:Envelope 2. 选择自己的正式开发号(测试用户跳过此步骤) 3. 点击"程序" ...
- linux运行java程序引用jar包,ubuntu下java 命令行引用jar包的方法
推荐文章 Ubuntu常用快捷键总结 桌面常用快捷键 Alt + F1:聚焦到桌面左侧任务导航栏,可按上下键进行导航 Alt + F2:运行命令 Alt + F4:关闭当前窗口 Alt + Tab:切 ...
- Idea java 程序打jar包(maven)
1.准备好控制台程序 2.引用的项目打包(公共类接口) 3.开发打包 点击运行 打包结果如下 转载于:https://www.cnblogs.com/lijiasnong/p/9186096.html
- linux jar 运行 停止,[转] Linux中启动和停止jar包的运行
脚本一: startTest.sh内容如下: #!/bin/sh java -jar Test.jar & #注意:必须有&让其后台执行,否则没有pid生成 echo $! ...
- Linux运行hadoop命令,将hadoop程序打成jar包,在linux下以命令行方式运行(例如单词计算程序)...
自定义Mapper import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.ha ...
最新文章
- swift-video-generator:图片加音频生成视频及多视频合并库及演示
- 数据库基础笔记(MySQL)7 —— 存储引擎和视图 ( 完结撒花 )
- 十分钟读懂『卡尔曼滤波算法』
- Java Collections CheckedCollection()方法与示例
- server2003 IIS 错误 解决
- 港中文等提出:开放世界实体分割
- spring boot访问templates目录下的html静态页面
- 功能表单之智能选择字段类型的使用——JEPLUS软件快速开发平台
- linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
- Android 插件化框架replugin replugin-host-library 源码解析
- 仿支付宝输入密码效果
- 0基础python笔记str/list/tuple/dict
- 【数字图像处理】【个人入门记录】 绪论
- scp 保留文件属组_scp传输文件的权限问题
- 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)
- 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)
- 二、Node 多版本管理
- cdr保存的内容计算机搜不到,CorelDRAW自动保存的文件在哪里?
- 2021米哈游校园招聘-提前批-编程题1-最简分式
- Unity编辑视图中相机没了?你可能不小心碰到了它