文档章节

java命令行执行带依赖jar包的main函数

山哥
 山哥
发布于 2016/04/13 09:37
字数 513
阅读 7129
收藏 6

# 在Linux下面ClassPath前面是一个点号加一个冒号; 在Windows下面ClassPath前面是一个点号加一个分号

Linux: java -Dfile.encoding=utf8 -cp .:./lib/commons-lang-2.6.jar:./lib/log4j-1.2.15.jar Mytest

Windows:java -Dfile.encoding=gbk -cp .;./lib/commons-lang-2.6.jar;./lib/log4j-1.2.15.jar Mytest


# 由于 -cp 参数不能用通配符,当依赖 jar 文件都在同一目录,可通过 -Djava.ext.dirs 指定目录。

# 注意: java中系统属性java.ext.dirs指定的目录由ExtClassLoader加载器加载,如果您的程序没有指定该系统属性(-Djava.ext.dirs=sss/lib)那么该加载器默认加载$JAVA_HOME/lib/ext目录下的所有jar文件。但如果你手动指定系统属性且忘了把 $JAVA_HOME/lib/ext 路径给加上,那么ExtClassLoader不会去加载$JAVA_HOME/lib/ext下面的jar文件,这意味着你将失去一些功能,例如java自带的加解密算法实现。

java -Djava.ext.dirs=lib Mytest


# 如果在MANIFEST.MF里配置了Main-Class,可以直接执行jar文件

java -jar xxx.jar


# 如果程序中需要解析在  classpath 下的一些配置文件,则可以将这些配置文件放到一个目录下,并使用 -classpath 指定

java -Djava.ext.dirs=lib -classpath conf  com.test.MyTest


-------------------------------------------------------------------------------------------------------------------------------------

总结下(在Linux环境下):

1. 如果所有 jar 包都在 lib 目录下,配置文件在 conf 目录下:

java  -Dfile.encoding=utf8  -Djava.ext.dirs=./lib  -classpath  ./conf   com.test.MyTest


2. 如果所有依赖 jar 包在 lib 目录下,但是 主程序 jar 包在别的目录下,则要结合 -cp;此时就不能使用 -classpath conf 来指定配置文件目录了,必须要放到 -cp 下,将 conf 目录和 主程序 jar 连接在一起:

java  -Dfile.encoding=utf8  -Djava.ext.dirs=./lib  -cp ./conf:./test.jar   com.test.MyTest


3. 不使用 -Djava.ext.dirs ,仍然使用 -cp,则使用程序循环 jar 包拼接路径:

app_path=.
jars_path=$app_path/lib
conf_path=$app/conf

jars=`find $jars_path -name "*.jar"`

cp_env=$conf_path

for jar in jars
do
    cp_env=$cp_env:$jar
done

# 如果Main方法所在的主 jar 包,不在 lib 目录下,则需要再把主 jar 包也接入 cn_env
# cp_env=$cp_env:$app_path/test.jar

exec java -Dfile.encoding=utf8 -cp "$cp_env"  com.test.MyTest

-------------------------------------------------------------------------------------------------------------------------------------


本文转载自:

山哥

山哥

粉丝 248
博文 355
码字总数 136865
作品 0
南京
程序员
私信 提问
使用Maven运行Java main的方法(转)

使用Maven运行Java Main的方法(既Java Application项目),可以有如下方式解决: 1、将Maven项目导入到eclipse中,然后直接项目右键【Run As】->【Java Application】。 2、直接指定jar包的...

easonjim
2017/05/09
0
0
使用lein和Intellij IDEA12建立cljure项目

----------------版本旧了,各位新手绕道吧--------------- 最近看了paul大神的黑客与画家.于是想学lisp.不过因为出身java.于是找了同为jvm系的clojure作为lisp旅程的第一步.无奈国内新手引导...

架构梦想
2013/12/22
802
0
JAVA基础知识之编译、运行、打包

一:java环境设置 在环境变量中设置以下三个变量: JAVAHOME=C:j2sdk1.4.1 //可以改为相应的目录 CLASSPATH=%JAVAHOME%libtools.jar;%JAVAHOME%libdt.jar PATH=%JAVAHOME%bin;%PATH% 然后在命...

luminji
2015/06/03
0
0
Ubuntu 18.04.1 搭建Java环境和HelloWorld

一、搭建Java环境 系统环境 Ubuntu 18.04.1 JDK 8 IDEA 2018.2 1.下载JDK 官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本,点击jdk,进入下...

王磊的博客
2018/08/24
0
0
开发第一个spring boot应用

我们来用spring boot开发一个简单的“hello world”web应用,使用maven构建。开始之前,先检查你的java与maven的版本,看是否是spring boot1.3支持的版本: $ java -versionjava version "1...

柳哥
2015/05/17
17.7K
3

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部