最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年10月18日 16:49:07   作者:闞壠  
本篇文章主要介紹了shell腳本運行java程序jar的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

分析可能原因:

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

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

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

分析可能原因:

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

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

后來上網查了下,想到可能是腳本中環(huán)境變量的原因,因為通過crontab運行腳本,是以root用戶,而不是當前用戶,于是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顯示導出為用戶環(huán)境變量的環(huán)境變量

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

修改參考:

#!/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腳本沒有可執(zhí)行權限,通過ls -lrt /apps/service/mtk/checking/run.sh查看腳本是有可執(zhí)行,但是有執(zhí)行權限呀-rwxr-xr-x

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

后來上網查了下,想到可能是腳本中環(huán)境變量的原因,因為通過crontab運行腳本,是以root用戶,而不是當前用戶,于是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顯示導出為用戶環(huán)境變量的環(huán)境變量

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

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

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

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

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

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

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

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

#!/bin/bash后追加

source /etc/profile
source ~/.bash_profile

測試下。。

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

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

相關文章

  • 詳解Java的面向對象和面向過程

    詳解Java的面向對象和面向過程

    我們知道,Java是面向對象的編程語言,但是至今仍有不少同學還不太懂”面向對象“的確切含義,今天這篇文章就帶大家真正地認識面向對象,感興趣的同學可以跟著小編一起來學習
    2023-05-05
  • 解決SpringBoot在IDEA中熱部署失效問題

    解決SpringBoot在IDEA中熱部署失效問題

    熱部署是指程序運行過程中實時更新或替換其組件的技術,即項目正在啟動中,修改了配置文件中某個值或者添加了某個方法或者修改了某個方法參數,本文給大家介紹了解決SpringBoot在IDEA中熱部署失效問題,需要的朋友可以參考下
    2024-01-01
  • Java十大經典排序算法圖解

    Java十大經典排序算法圖解

    這篇文章主要介紹了Java十大經典排序算法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Java設計模式之策略模式詳細解析

    Java設計模式之策略模式詳細解析

    這篇文章主要介紹了Java設計模式之策略模式詳細解析,策略模式中,定義算法族,分別封裝起來,讓他們之間可以相互轉化,此模式讓算法的變化獨立于使用算法的客戶,需要的朋友可以參考下
    2023-11-11
  • ArrayList在for循環(huán)中使用remove方法移除元素方法介紹

    ArrayList在for循環(huán)中使用remove方法移除元素方法介紹

    這篇文章主要介紹了ArrayList在for循環(huán)中使用remove方法移除元素的內容,介紹了具體代碼實現,需要的朋友可以參考下。
    2017-09-09
  • JavaEE7+Websockets+GlassFish4打造聊天室

    JavaEE7+Websockets+GlassFish4打造聊天室

    Java EE 7已經發(fā)布很久了,新增加了很多新的功能和特性,如新增或更新了不少的JSR標準。其中特別受到關注的是Websockets。它的一個好處之一是減少了不必要的網絡流量。它主要是用于在客戶機和服務器之間建立單一的雙向連接。
    2015-09-09
  • Java常用注解擴展對比舉例詳解

    Java常用注解擴展對比舉例詳解

    這篇文章主要介紹了Java常用注解擴展對比的相關資料,提供了豐富的代碼示例,并總結了最佳實踐建議,幫助開發(fā)者更好地理解和應用這些注解,需要的朋友可以參考下
    2025-03-03
  • Java校驗銀行卡是否正確的核心代碼

    Java校驗銀行卡是否正確的核心代碼

    這篇文章主要介紹了Java校驗銀行卡是否正確的核心代碼,需要的朋友可以參考下
    2017-01-01
  • SpringBoot使用itext填充pdf表單及導出pdf的流程

    SpringBoot使用itext填充pdf表單及導出pdf的流程

    由于最近開發(fā)的項目需要用到打印單據,就在網上找了一下方案,反反復復,都沒有找到合適的,借鑒了網上資源,使用itext5、itext7的工具包,所以本文介紹了SpringBoot使用itext填充pdf表單及導出pdf的流程,需要的朋友可以參考下
    2024-09-09
  • Jmeter使用接口傳遞數據過程圖解

    Jmeter使用接口傳遞數據過程圖解

    這篇文章主要介紹了Jmeter使用接口傳遞數據過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05

最新評論

修文县| 张家港市| 东宁县| 四川省| 西林县| 聂拉木县| 绍兴市| 东宁县| 来凤县| 灵宝市| 句容市| 昌平区| 安图县| 永济市| 永宁县| 阿坝县| 垣曲县| 中山市| 马公市| 礼泉县| 通榆县| 波密县| 长乐市| 泸西县| 永定县| 福泉市| 万载县| 泰和县| 金秀| 河北省| 井冈山市| 信丰县| 宜黄县| 高唐县| 荣成市| 万荣县| 萝北县| 娄烦县| 深泽县| 呼图壁县| 徐汇区|