国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - shell腳本運行java程序jar的方法

shell腳本運行java程序jar的方法

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

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

在UBuntu上部署項目的時候,我們往往通過一段shell來啟動程序,甚至是通過crontab定時任務來定時的調用java程序,但是很奇怪的一個問題就是,比如我寫了一個如下的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"

手動命令行運行該腳本的時候,可以正常運行java程序,但是使用crontab定時任務,貌似就不起效果了

分析可能原因:

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

 2)既然單獨運行腳本沒問題,那會不會是定時的問題呢?于是寫了一個簡單的輸出的shell腳本通過定時也是沒問題的。說明還是腳本的問題。

后來上網查了下,想到可能是腳本中環境變量的原因,因為通過crontab運行腳本,是以root用戶,而不是當前用戶,于是cat /etc/profile查看環境變量,然后修改腳本如下:

分析可能原因:

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

 2)既然單獨運行腳本沒問題,那會不會是定時的問題呢?于是寫了一個簡單的輸出的shell腳本通過定時也是沒問題的。說明還是腳本的問題。

后來上網查了下,想到可能是腳本中環境變量的原因,因為通過crontab運行腳本,是以root用戶,而不是當前用戶,于是cat /etc/profile查看環境變量,然后修改腳本如下:

?
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顯示導出為用戶環境變量的環境變量

這樣crontab計劃任務就正常了。 

修改參考:

?
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 & 

手動命令行運行該腳本的時候,可以正常運行java程序,但是使用crontab定時任務,貌似就不起效果了,很是郁悶哪,查原因哪,分析可能原因:

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

 2)既然單獨運行腳本沒問題,那會不會是定時的問題呢?于是寫了一個簡單的輸出的shell腳本通過定時也是沒問題的。說明還是腳本的問題。

后來上網查了下,想到可能是腳本中環境變量的原因,因為通過crontab運行腳本,是以root用戶,而不是當前用戶,于是cat /etc/profile查看環境變量,然后修改腳本如下:

?
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顯示導出為用戶環境變量的環境變量

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

將第三方jar包加入manifest.mf文件中,且指定程序主類

在build.xml中添加如下內容:

?
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文件時,加上:

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

這樣運行ant,打成的jar包中MANIFEST.MF中內容如下:

?
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包了,也就不存在環境變量設置的惱人問題。比較正規的也是這么操作的。

這樣在shell中就直接運行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方法所在的類名

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日日摸夜夜添夜夜添精品视频 | 啪啪网站免费 | 91cn在线观看 | 国产亚洲精品久久久久动 | 自拍视频在线观看 | 天堂中文网官网 | 久久久无码精品亚洲日韩按摩 | 日韩视频一区二区三区 | 精品国产乱码久久久久久牛牛 | 先锋资源在线观看 | 国产精品久久久 | 国产成人精品久久二区二区 | 日韩天堂| 精品视频免费观看 | 久久国产亚洲精品 | 国产精品免费视频一区二区三区 | 五月婷婷在线视频 | 88888888国产一区二区 | 免费看亚洲 | 一区二区三区回区在观看免费视频 | 日本电影一区 | 国产精品久久久久久久久晋中 | 久久精品国产精品亚洲 | 看a网址| 国产精品成人一区二区 | 午夜视频导航 | 五月天婷婷色综合 | 成人中文视频 | 国产一区在线不卡 | 国产精品密在线观看 | 亚洲一区二区视频在线观看 | 成年人毛片视频 | 欧美日韩高清在线一区 | 91国内| 精品国产乱码久久久久久牛牛 | 国产毛片一区二区 | 国产精品国产三级国产aⅴ中文 | 羞羞网站免费 | 一区二区三区在线播放 | 一级毛片儿 | 亚洲美女性视频 |