将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)中,第三种方法。
将Java程序打jar包并运行的更多相关文章
- Linux上java程序的jar包启动通用脚本(稳定用过)
Linux上java程序的jar包启动通用脚本如下: #! /bin/sh export LANG="zh_CN.GBK" SERVICE_NAME=` .sh` SCRIPT_N ...
- 高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包
高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包 Eclipse Version: Neon.3 Release (4.6.3) Welc ...
- Eclipse中将java类打成jar包形式运行
记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...
- Java Service Wrapper 发布Java程序或者jar包为Windows服务
下载Windows版本:http://nchc.dl.sourceforge.net/sourceforge/wrapper/wrapper-windows-x86-32-3.2.3.zip 现在目前 ...
- Idea java 程序打jar包(maven)
1.准备好控制台程序 2.引用的项目打包(公共类接口) 3.开发打包 点击运行 打包结果如下
- spring boot 程序打jar包及运行
- java打jar包和运行jar包的两种方式
java打jar包和运行jar包的两种方式更详细的打包方式请参考https://www.cnblogs.com/mq0036/p/8566427.html 一.java类不依赖第三方jar包以简单的一 ...
- 【spring cloud】【IDEA】【Maven】spring cloud多模块打包,打包的jar包只有几k,jar包无法运行,运行报错:no main manifest attribute, in /ms-eureka.jar
======================================================================================== 引申:maven打包多 ...
- Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密
[前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...
随机推荐
- linux 监控网卡实时流量iftop
一.安装iftop Centos也可以直接yum install iftop -y http://www.tcpdump.org/release/ 到如下获取libpcap.tcpdump iftop ...
- ubuntu12.04 Qt WebKit编译
转载自:http://my.oschina.net/u/257674/blog/167050 官方文档: http://trac.webkit.org/wiki/BuildingQtOnLinux#D ...
- canvas知识02:图片放大镜效果
效果截图: JS代码: <script> // 初始化canvas01和上下文环境 var cav01 = document.getElementById('cav01'); var cx ...
- 转:极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法
转自:极小极大搜索方法.负值最大算法和Alpha-Beta搜索方法 1. 极小极大搜索方法 一般应用在博弈搜索中,比如:围棋,五子棋,象棋等.结果有三种可能:胜利.失败和平局.暴力搜索,如果想通 ...
- 最大流算法 ISAP 模板 和 Dinic模板
ISAP // UVa11248 Frequency Hopping:使用ISAP算法,加优化 // Rujia Liu struct Edge { int from, to, cap, flow; ...
- nginx启动脚本(class练习)
说明:使用类的方式编写程序启动脚本(练习) 1 #!/usr/bin/env python import sys import os from subprocess import Popen,PIPE ...
- algorithm ch6 heapsort
堆排序利用的是堆这种数据结构来对进行排序,(二叉)堆可以被视为一棵完全的二叉树,树的每个节点与数组中存放该节点的值得那个元素对应.这里使用最大堆进行排序算法设计,最大堆就是parent(i) > ...
- 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】
转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...
- linux下检测可用串口并使用minicom打开
目前使用minicom作为串口软件.但使用过程中,有一点感觉不方便的地方,就是我需要使用多个串口,当使用的不是串口0时,就要手动修改minicom的配置. 于是考虑实现脚本,自动列出当前串口,选择后调 ...
- kuangbin带你飞 最短路 题解
求一个图最短路边的办法.好像下面的那个有问题.单向边和双向边一定是有区别的.这个比较容易.参照该文的最短路网络流题目和连通图题目一题求最短路关节边 另外上述2个题目的代码好像有问题. 在UVALIVE ...