激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - shell腳本運(yùn)行java程序jar的方法

shell腳本運(yùn)行java程序jar的方法

2021-01-21 13:49闞壠 Java教程

本篇文章主要介紹了shell腳本運(yùn)行java程序jar的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

在UBuntu上部署項(xiàng)目的時(shí)候,我們往往通過一段shell來啟動(dòng)程序,甚至是通過crontab定時(shí)任務(wù)來定時(shí)的調(diào)用java程序,但是很奇怪的一個(gè)問題就是,比如我寫了一個(gè)如下的shell腳本:

?
1
2
3
4
5
6
#!/bin/sh
export mypath=/root/project/wishnomal
 
java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*
 
echo "END"

手動(dòng)命令行運(yùn)行該腳本的時(shí)候,可以正常運(yùn)行java程序,但是使用crontab定時(shí)任務(wù),貌似就不起效果了

分析可能原因:

 1)是否當(dāng)前用戶對此shell腳本沒有可執(zhí)行權(quán)限,通過ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權(quán)限呀-rwxr-xr-x

 2)既然單獨(dú)運(yùn)行腳本沒問題,那會不會是定時(shí)的問題呢?于是寫了一個(gè)簡單的輸出的shell腳本通過定時(shí)也是沒問題的。說明還是腳本的問題。

后來上網(wǎng)查了下,想到可能是腳本中環(huán)境變量的原因,因?yàn)橥ㄟ^crontab運(yùn)行腳本,是以root用戶,而不是當(dāng)前用戶,于是cat /etc/profile查看環(huán)境變量,然后修改腳本如下:

分析可能原因:

 1)是否當(dāng)前用戶對此shell腳本沒有可執(zhí)行權(quán)限,通過ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權(quán)限呀-rwxr-xr-x

 2)既然單獨(dú)運(yùn)行腳本沒問題,那會不會是定時(shí)的問題呢?于是寫了一個(gè)簡單的輸出的shell腳本通過定時(shí)也是沒問題的。說明還是腳本的問題。

后來上網(wǎng)查了下,想到可能是腳本中環(huán)境變量的原因,因?yàn)橥ㄟ^crontab運(yùn)行腳本,是以root用戶,而不是當(dāng)前用戶,于是cat /etc/profile查看環(huán)境變量,然后修改腳本如下:

?
1
2
3
4
5
6
7
8
#!/bin/sh
export mypath=/root/project/wishnomal
export JAVA_HOME=/root/lib/jdk1.7.0_72
PATH=$PATH:$JAVA_HOME/bin
 
java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*
 
echo "END"

export顯示導(dǎo)出為用戶環(huán)境變量的環(huán)境變量

這樣crontab計(jì)劃任務(wù)就正常了。 

修改參考:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
# -----------------------------------------------------------------------------
# Start script for the CMGP BOSSCONTROL 
#
# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $
# -----------------------------------------------------------------------------
#指定字符集
LANG=zh_CN.GBK export LANG
RUN_HOME=.
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/checking.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar
 
export CLASSPATH
 
java com.**.checking.Checking_Start >> log.out & 

手動(dòng)命令行運(yùn)行該腳本的時(shí)候,可以正常運(yùn)行java程序,但是使用crontab定時(shí)任務(wù),貌似就不起效果了,很是郁悶?zāi)模樵蚰模治隹赡茉颍?/p>

 1)是否當(dāng)前用戶對此shell腳本沒有可執(zhí)行權(quán)限,通過ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權(quán)限呀-rwxr-xr-x

 2)既然單獨(dú)運(yùn)行腳本沒問題,那會不會是定時(shí)的問題呢?于是寫了一個(gè)簡單的輸出的shell腳本通過定時(shí)也是沒問題的。說明還是腳本的問題。

后來上網(wǎng)查了下,想到可能是腳本中環(huán)境變量的原因,因?yàn)橥ㄟ^crontab運(yùn)行腳本,是以root用戶,而不是當(dāng)前用戶,于是cat /etc/profile查看環(huán)境變量,然后修改腳本如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
# -----------------------------------------------------------------------------
# Start script for the CMGP BOSSCONTROL 
#
# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $
# -----------------------------------------------------------------------------
export PATH=/apps/usr/java/jdk1.5/bin:$PATH
export JAVA_HOME=/apps/usr/java/jdk1.5
export JRE_HOME=/apps/usr/java/jdk1.5/jre
export CLASSPATH=/apps/usr/java/jdk1.5/lib:/apps/usr/java/jdk1.5/jre/lib:$CLASSPATH
RUN_HOME=/apps/service/checking
CLASSPATH=$CLASSPATH$RUN_HOME/lib/checking.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar
 CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar
 
export CLASSPATH=$CLASSPATH
 
java com.**.checking.Checking_Start >> log.out & 

export顯示導(dǎo)出為用戶環(huán)境變量的環(huán)境變量

以上這種jar包是通過eclipse工具export導(dǎo)出,不包含MANIFEST.MF文件,如果使用打包工具Ant,我們可以在打包默認(rèn)的build.xml文件中設(shè)置Class-Path

將第三方j(luò)ar包加入manifest.mf文件中,且指定程序主類

在build.xml中添加如下內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- create a property containing all .jar files, prefix lib/, and seperated with a space -->
<pathconvert property="libs.project" pathsep=" ">
  <mapper>
   <chainedmapper>
    <!-- remove absolute path -->
    <flattenmapper />
    <!-- add lib/ prefix -->
    <globmapper from="*" to="lib/*" />
   </chainedmapper>
  </mapper>
   <path>
   <!-- lib.home contains all jar files, in several subdirectories -->
   <fileset dir="${lib.dir}">
   <include name="**/*.jar" />
   </fileset>
   </path>
 </pathconvert>

另外,在create manifest文件時(shí),加上:

?
1
2
3
4
<!-- 這樣就可以將第三方j(luò)ar包加入 -->
<attribute name="Class-Path" value="${libs.project}" />
<!-- 程序運(yùn)行的主類 -->
<attribute name="Main-Class" value="com.**.checking.Checking_Start " />

這樣運(yùn)行ant,打成的jar包中MANIFEST.MF中內(nèi)容如下:

?
1
2
3
4
5
6
7
8
9
10
11
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_09-b01 (Sun Microsystems Inc.)
Implementation-Title: fee task
Implementation-Version: 1.0
Implementation-Vendor: Aspire
Main-Class: com.aspire.cmgp.flowcontrol.server.FlowControlServer
Class-Path: lib/cmgp-util-1.0.1.jar lib/commons-codec-1.3.jar lib/comm
 ons-collections.jar lib/commons-dbcp-1.2.1.jar lib/commons-httpclient
 .jar lib/commons-logging.jar lib/commons-pool-1.2.jar lib/dom4j.jar l
 ib/log4j.jar lib/ojdbc14.jar

這樣在shell腳本中就不需要指定程序所需要的jar包了,也就不存在環(huán)境變量設(shè)置的惱人問題。比較正規(guī)的也是這么操作的。

這樣在shell中就直接運(yùn)行jar包就行了:java -jar 主程序.jar -Xmx1024m -Xms1024m -Xmn512m,

#!/bin/bash后追加

source /etc/profile
source ~/.bash_profile

測試下。。

?
1
2
3
4
5
6
7
#! /bin/sh
export JAVA_HOME=/usr/java/jdk1.6.0_18
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
for i in lib/*.jar;
    do CLASSPATH=$i:${CLASSPATH}
done
export CLASSPATH=.:${CLASSPATH}

java -cp ${CLASSPATH} main方法所在包名.main方法所在的類名

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/hanlong/p/5761595.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 伦一区二区三区中文字幕v亚洲 | 得得啪在线 | 美女视频免费一区二区 | 成人网在线观看 | 一级毛片在线免费观看视频 | 免费观看一区二区三区 | 成年人视频免费看 | 欧美一级二级毛片视频 | 亚洲aⅴ免费在线观看 | 精品国产乱码一区二区三区四区 | 日本黄色一级毛片 | 97风流梦电影 | 久久国产精品久久久久久久久久 | av电影免费播放 | 色羞羞 | 狠狠操夜夜爱 | 中文亚洲视频 | 国产成人精品一区二区仙踪林 | av在线免费观看中文字幕 | 色就色 综合偷拍区91网 | 国产一区网址 | 成年人黄色免费网站 | 精品国产九九九 | 日本欧美一区二区三区在线观看 | 久久成年人视频 | 黄色大片免费看 | 国产精品美女久久久久久不卡 | 国产一级一区二区 | 国产精品久久久久久影院8一贰佰 | 在线成人免费观看www | 中文字幕在线永久视频 | 91色爱| 久久久久99999 | 国产在线第一区 | 国产精品亚洲一区二区三区在线观看 | 国产精品一区二区三区在线 | 在线免费观看麻豆 | 亚洲国产精品99 | av播放在线 | 成人短视频在线观看免费 | 国产精品久久久久久久久久三级 |