shell腳本怎麼打jar包
❶ 如何使用shell在unix下執行java 程序
你是在linux環境下運行吧!
如果你是要編譯執行單個java文件,當然用javac,和java,如果是在一個shell腳本中妄圖調用java程序,假如這個程序是個jar包,也許可以這么干:在你能保證的路徑下放入可執行的jar包,然後在腳本中寫到:java -jar jar包路徑+jar包名稱.jar,不信可以在終端使用該命令!
❷ 請教大神Linux下編寫shell腳本,利用javac如何編譯完整的java工程
#!/bin/sh# Define some constants
ONSSERVER=ONSServer
PROJECT_PATH=/root/iot-oid
JAR_PATH=$PROJECT_PATH/lib
BIN_PATH=$PROJECT_PATH/bin
SRC_PATH=$PROJECT_PATH/src/$ONSSERVER
# First remove the sources.list file if it exists and then create the sources file of the project
rm -f $SRC_PATH/sources
find $SRC_PATH/com -name *.java > $SRC_PATH/sources.list
# First remove the ONSServer directory if it exists and then create the bin directory of ONSServer
rm -rf $BIN_PATH/$ONSSERVER
mkdir $BIN_PATH/$ONSSERVER
# Compile the project
javac -d $BIN_PATH/$ONSSERVER -classpath $JAR_PATH/jdom.jar:$JAR_PATH/oro-2.0.8.jar @$SRC_PATH/sources.list
這個文件你可以保存好,然後 chmod +x ./shell 運行
javac -d YourDir -classpath xx.jar xxxx.java xx.java 這個命令的簡單的看就是 YourDir 你的生成文件的位置, -classpath 就是你引入的 jar 的路徑, xxx.java 就是源文件
javac 的用法:
用法: javac <options> <source files>
其中, 可能的選項包括:
-g 生成所有調試信息
-g:none 不生成任何調試信息
-g:{lines,vars,source} 只生成某些調試信息
-nowarn 不生成任何警告
-verbose 輸出有關編譯器正在執行的操作的消息
-deprecation 輸出使用已過時的 API 的源位置
-classpath <路徑> 指定查找用戶類文件和注釋處理程序的位置
-cp <路徑> 指定查找用戶類文件和注釋處理程序的位置
-sourcepath <路徑> 指定查找輸入源文件的位置
-bootclasspath <路徑> 覆蓋引導類文件的位置
-extdirs <目錄> 覆蓋所安裝擴展的位置
-endorseddirs <目錄> 覆蓋簽名的標准路徑的位置
-proc:{none,only} 控制是否執行注釋處理和/或編譯。
-processor <class1>[,<class2>,<class3>...] 要運行的注釋處理程序的名稱; 繞過默認的搜索進程
-processorpath <路徑> 指定查找注釋處理程序的位置
-parameters 生成元數據以用於方法參數的反射
-d <目錄> 指定放置生成的類文件的位置
-s <目錄> 指定放置生成的源文件的位置
-h <目錄> 指定放置生成的本機標頭文件的位置
-implicit:{none,class} 指定是否為隱式引用文件生成類文件
-encoding <編碼> 指定源文件使用的字元編碼
-source <發行版> 提供與指定發行版的源兼容性
-target <發行版> 生成特定 VM 版本的類文件
-profile <配置文件> 請確保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 輸出標准選項的提要
-A關鍵字[=值] 傳遞給注釋處理程序的選項
-X 輸出非標准選項的提要
-J<標記> 直接將 <標記> 傳遞給運行時系統
-Werror 出現警告時終止編譯
@<文件名> 從文件讀取選項和文件名
❸ linux shell調用java的jar包怎麼寫
這個應該不可能吧, 沒有jre光是你自己的java代碼怎麼可能執行. 唯一的可能就是你把jre也一起打包進你的jar文件, 然後再shell裡面運行jar文件的時候指定classpath到你的jar包路徑下的jre目錄
❹ linux如何啟動一個jar包
首先,使用編譯器把【Java】項目生成【Jar】包
1
1.首先,使用編譯器把【Java】項目生成【Jar】包
2.隨後,打開我們常使用的連接軟體【Xshell】
3.隨後,進入【XShell】中,點擊上方【文件夾圖標】
4.隨後從【左邊的本地文件夾】內,移動到【線上伺服器中】
5.隨後,【cd】進入到剛剛我們移動的目錄內
6.啟動jar包的命令為【nohup java -jar cc-java-export &】
nohup:把輸出內容放入到nohup的日誌中並生成日誌文件
java -jar:啟動java的jar包命令
cc-java-export:此處放入你自己的jar包名稱
&:關閉linux連接時 服務不會掛斷
7.也可以把上方的代碼 及【配置參數】封裝到【.sh】的啟動腳本中
總結
❺ shell定時執行腳本啟動jar程序的問題
在腳本里聲明java環境變數,加上下列語句在#! /bin/sh底下,注意.後面有空格
. ~/.bash_profile
. /etc/profile
❻ python 需要調用 /shell/目錄下的run.sh。在腳本中調用的是一個jar包,jar包可
我用的spss版本是22.0,也是最近為了使用SPSS Python Essentials才安裝的這個版本,大家可以參考這篇文章,以便正確安裝spss 22.0。
安裝好了spss22.0以後,如果你按照上面的安裝教程進行的安裝,SPSS Python Essentials就自動的安裝在了你的spss22.0的安裝目錄下。接下來我們要進行必要的設置。
打開spss22的界面,打開編輯菜單下的【選項】
切換到腳本選項下,我們設置一下預設腳本語言為python,點擊【應用】
切換到【文件位置】選項下,設置python的位置,我們有兩個選項,一個是隨IBM SPSS安裝的位置,這就是說,spss22在安裝的時候自動安裝了python2.7,如果我們想要使用這個python,就選擇第一個選項;但是我現在有一個更好的建議,使用我們自己安裝的python,也就是說在安裝spss之前就有一個python安裝好了,我現在想使用這個python,我們可以設置python的其他安裝,然後找到這個python安裝的目錄,最後點擊確定就可以了。為什麼我建議使用第二種選擇呢?因為我的python下有很多安裝好的擴展包,需要在處理數據的時候調用,以後安裝新的擴展包也很方便。如果使用是、隨spss安裝的python,還需要另行安裝這些擴展包
設置完成以後,我們想要啟動python的編輯窗口,需要在開始菜單中啟動,如圖所示。不能直接從python的安裝目錄里啟動。
另外,spss22還有一個bug,我們雖然設置了Python的主目錄,但是在新建腳本的時候,還是用的隨spss安裝的python的shell。所以想要使用python腳本,你就從上面那個方面里啟動python shell
原作者:Delta數據工作室
❼ 項目jar包上傳到shell後怎麼用腳本運行
1、上傳jdk的安裝包到 /rootjdk-8u131-linux-x64.tar.gz
2、確認系統是否已經安裝過jdkrpm -qa|grep jdkrpm -e _nodeps 軟體名稱 //如果檢查到有安裝就執行卸載命令
3、解壓縮jdk的安裝包到指定目錄
tar -xvf jdk-8u131-linux-x64.tar.gz -C /usr/local/
4、進入解壓縮目錄
cd /usr/local
5、修改jdk的文件夾名稱mv jdk1.8.0_131 jdk
6、配置環境變數修改環境變數配置文件:vi /etc/profile,點 i鍵進入編輯模式,按ESC 輸入:wq 保存退出
7、重新載入環境配置,source /etc/profile
8、測試JDK安裝是否ok
java -version
9、編寫hello.java
vi Hello.java
然後ESC :wq退出
❽ 用shell腳本怎樣編譯java工程
用shell腳本怎樣編譯java工程
編譯java工程一般直接用IDE或者用Ant、Maven之類的工具,很少有人用純shell來編譯java工程。正好遇到這樣一個應該,用這篇博文做一下記錄。
案例:用eclipse寫了一個java project,然後編譯打成jar包。
這個可以採用eclipse自帶的Export就可以導出jar了。但是為了軟體自動化等巴拉巴拉的原因,採用存shell腳本編譯。
就是制定了運行的main-class(有public static void main(String args[])的類)。
將這個文件拷貝到iec104的根目錄下,然後執行腳本compile.sh,內容如下:
#!/bin/bash
cur_dir=$(pwd)
echo $cur_dir
function do_compile_iec104(){
# echo $cur_dir
iec104=$cur_dir/iec104
iec104_src=$cur_dir/iec104/src
iec104_bin=$cur_dir/iec104/bin
# echo $iec104_src
# echo $iec104_bin
iec104_class=$cur_dir/iec104/class
# 將iec104的src目錄下的所有java文件的名稱存入到iec104/src/sources.list文件中
rm -rf $iec104_src/sources.list
find $iec104_src -name "*.java" > $iec104_src/sources.list
cat $iec104_src/sources.list
# $iec104_class是存放編譯的class文件的目錄
rm -rf $iec104_class
mkdir $iec104_class
# 這里開始編譯java文件,注意這里的-encoding utf-8,剛開始並沒有加入這個,然後就報了一堆錯誤,糾結了很久才發現,這里給各位提個醒了。
javac -d $iec104_class -encoding utf-8 -classpath $iec104_bin/classes12.jar:$iec104_bin/junit-4.10.jar:$iec104_bin/log4j-1.2.17.jar:$iec104_bin/mysql-connector-java-5.0.5-bin.jar:$iec104_bin/RXTXcomm.jar -g -sourcepath $iec104_src @$iec104_src/sources.list
# 由於用到了log4j,所以要將log4j的配置文件一並放入,如果沒有用到,可以忽略這句
cp $iec104_src/log4j.properties $iec104_class
# 如果原來在iec104目錄下有jar報就刪除掉,因為要生成新的
rm $iec104/iec104.jar
# 這里要cd到存放class的目錄,否則如果採用絕對路徑編譯,編譯出來的jar包裡面就是絕對路徑了,這樣就會有問題
# jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF $iec104_class/*這樣是錯誤的
cd $iec104_class
jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF *
# 賦予可執行許可權
sudo chmod a+x $iec104/iec104.jar
}
do_compile_iec104
exit 0
運行這個腳本(linux下)就可以編譯並且在iec104的目錄下就可以看到iec104.jar文件了。
這里補充下java命令的基本知識:
javac 用於編譯Java文件,格式為:
java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,預設情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :
❾ 如何通過shell腳本調用java的main方法
你把整個工程打成jar包,然後在linux下執行java -jar xxxx.jar就好了,打jar包的時候默認都是以main函數為入口的