欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年10月18日 16:49:07   作者:闞壠  
本篇文章主要介紹了shell腳本運(yùn)行java程序jar的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

#!/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)前用戶對(duì)此shell腳本沒(méi)有可執(zhí)行權(quán)限,通過(guò)ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權(quán)限呀-rwxr-xr-x

 2)既然單獨(dú)運(yùn)行腳本沒(méi)問(wèn)題,那會(huì)不會(huì)是定時(shí)的問(wèn)題呢?于是寫(xiě)了一個(gè)簡(jiǎn)單的輸出的shell腳本通過(guò)定時(shí)也是沒(méi)問(wèn)題的。說(shuō)明還是腳本的問(wèn)題。

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

分析可能原因:

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

 2)既然單獨(dú)運(yùn)行腳本沒(méi)問(wèn)題,那會(huì)不會(huì)是定時(shí)的問(wèn)題呢?于是寫(xiě)了一個(gè)簡(jiǎn)單的輸出的shell腳本通過(guò)定時(shí)也是沒(méi)問(wèn)題的。說(shuō)明還是腳本的問(wèn)題。

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

#!/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ù)就正常了。 

修改參考:

#!/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)前用戶對(duì)此shell腳本沒(méi)有可執(zhí)行權(quán)限,通過(guò)ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權(quán)限呀-rwxr-xr-x

 2)既然單獨(dú)運(yùn)行腳本沒(méi)問(wèn)題,那會(huì)不會(huì)是定時(shí)的問(wèn)題呢?于是寫(xiě)了一個(gè)簡(jiǎn)單的輸出的shell腳本通過(guò)定時(shí)也是沒(méi)問(wèn)題的。說(shuō)明還是腳本的問(wèn)題。

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

#!/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包是通過(guò)eclipse工具export導(dǎo)出,不包含MANIFEST.MF文件,如果使用打包工具Ant,我們可以在打包默認(rèn)的build.xml文件中設(shè)置Class-Path

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

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

<!-- 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í),加上:

<!-- 這樣就可以將第三方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)容如下:

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è)置的惱人問(wèn)題。比較正規(guī)的也是這么操作的。

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

#!/bin/bash后追加

source /etc/profile
source ~/.bash_profile

測(cè)試下。。

#! /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方法所在的類名

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot集成spring data elasticsearch過(guò)程詳解

    Springboot集成spring data elasticsearch過(guò)程詳解

    這篇文章主要介紹了springboot集成spring data elasticsearch過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • eclipse部署tomcat服務(wù)器無(wú)法啟動(dòng)問(wèn)題的解決方法

    eclipse部署tomcat服務(wù)器無(wú)法啟動(dòng)問(wèn)題的解決方法

    這篇文章主要為大家詳細(xì)介紹了eclipse部署tomcat服務(wù)器無(wú)法啟動(dòng)問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • mybatis省略@Param注解操作

    mybatis省略@Param注解操作

    這篇文章主要介紹了mybatis省略@Param注解操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • java事務(wù)回滾失敗問(wèn)題分析

    java事務(wù)回滾失敗問(wèn)題分析

    這篇文章主要介紹了java事務(wù)回滾失敗問(wèn)題分析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 1秒實(shí)現(xiàn)Springboot 圖片添加水印功能

    1秒實(shí)現(xiàn)Springboot 圖片添加水印功能

    這篇文章主要介紹了1秒實(shí)現(xiàn)Springboot 圖片添加水印功能,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • jstorm源碼解析之bolt異常處理方法

    jstorm源碼解析之bolt異常處理方法

    下面小編就為大家?guī)?lái)一篇jstorm源碼解析之bolt異常處理方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Spring?中?PageHelper?不生效問(wèn)題及解決方法

    Spring?中?PageHelper?不生效問(wèn)題及解決方法

    這篇文章主要介紹了Spring?中?PageHelper?不生效問(wèn)題,使用這個(gè)插件時(shí)要注意版本的問(wèn)題,不同的版本可能 PageHelper 不會(huì)生效,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 深入淺出重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)

    深入淺出重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)

    通常來(lái)講,重構(gòu)是指不改變功能的情況下優(yōu)化代碼,但本文所說(shuō)的重構(gòu)也包括了添加功能。這篇文章主要介紹了重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • ?基于Java解決華為機(jī)試之字符串合并處理實(shí)操

    ?基于Java解決華為機(jī)試之字符串合并處理實(shí)操

    這篇文章主要介紹了基于Java解決華為機(jī)試之字符串合并處理,文章以實(shí)操展開(kāi)主題內(nèi)容,具有一的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)工作中的你有所幫助
    2022-02-02
  • java基于UDP實(shí)現(xiàn)在線聊天功能

    java基于UDP實(shí)現(xiàn)在線聊天功能

    這篇文章主要為大家詳細(xì)介紹了java基于UDP實(shí)現(xiàn)在線聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評(píng)論