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

Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程

 更新時(shí)間:2017年05月07日 14:36:18   作者:u013063153  
這篇文章主要給大家介紹了在Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程,文中介紹的非常詳細(xì),相信對大家的工作或者學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

問題來源

一般來說,一個稍微大些的項(xiàng)目都會有一些依賴的Jar包,而在將項(xiàng)目部署到服務(wù)器的過程中,如果沒有持續(xù)集成環(huán)境的話,也就是說服務(wù)器不支持在線編譯及打包,那么需要自己上傳依賴的Jar包,然而可能服務(wù)器上已經(jīng)存在了該項(xiàng)目所依賴的Jar包(比如項(xiàng)目修復(fù)BUG,重新打包上傳,而依賴不變),無需再次上傳,此時(shí)只需將該項(xiàng)目單獨(dú)打包,在運(yùn)行的時(shí)候指定CLASSPATH即可。

在將Jar包部署到服務(wù)器上之后,設(shè)置CLASSPATH環(huán)境變量,運(yùn)行Java -jar ...命令出現(xiàn)ClassNotFoundException異常。之后又試用了諸多其它參數(shù)設(shè)置CLASSPATH,例如下面幾個命令,同樣都是報(bào)找不到類異常。

set CLASSPATH = classpath1;classpath2...
java -classpath ".;D:\mylib\*" -jar jar包 #Windows設(shè)置
java -classpath ".:/data/home/mylib/*" -jar jar包 #Linux設(shè)置
java -cp ...
java -cp /lib/*

關(guān)于在CLASSPATH參數(shù)中使用通配符需要注意

正確方式(冒號代表是Linux,Windows使用分號)

java -classpath "lib/*:." my.package.Program

不正確方式

java -classpath "lib/a*.jar:." my.package.Program
java -classpath "lib/a*:."  my.package.Program
java -classpath "lib/*.jar:." my.package.Program
java -classpath lib/*:.  my.package.Program

解決辦法

首先你需要知道Jar包分為可執(zhí)行Jar和非可執(zhí)行Jar,一個可執(zhí)行的Jar文件是一個自包含的Java應(yīng)用程序,它存儲在特別配置的JAR文件中,可以由JVM直接執(zhí)行它而無需事先提取文件或者設(shè)置類路徑。要運(yùn)行存儲在非可執(zhí)行的JAR中的應(yīng)用程序,必須將它加入到您的類路徑中,并用名字調(diào)用應(yīng)用程序的主類。但是使用可執(zhí)行的JAR文件,我們可以不用提取它或者知道主要入口點(diǎn)就可以運(yùn)行一個應(yīng)用程序。可執(zhí)行JAR有助于方便發(fā)布和執(zhí)行Java應(yīng)用程序。

對于可執(zhí)行Jar,在運(yùn)行java -jar選項(xiàng)的時(shí)候,那么環(huán)境變量CLASSPATH和在命令行中指定的所有類路徑都將被JVM忽略,也就是說,對于一個可執(zhí)行Jar,使用java -classpath或者java -cp或者set classpath=lib/commons-io-2.4.jar等等命令指定CLASSPATH都是無效的。

對于一個可執(zhí)行的JAR必須通過MANIFEST.MF文件的頭引用它所需要的所有其他從屬JAR,引用方式如下

Class-Path: lib/commons-io-2.4.jar lib/commons-lang3-3.4.jar

如果有多個Jar包那么相互之間使用空格分隔。MANIFEST文件的一般格式如下

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: wangxu
X-Compile-Target-JDK: 1.7
X-Compile-Source-JDK: 1.7
Created-By: Apache Maven 3.3.3
Build-Jdk: 1.8.0_45
Main-Class: com.yuewen.statistics.report.service.Main
Class-Path: lib/commons-io-2.4.jar lib/commons-lang3-3.4.jar lib/guava-18.0.jar lib/junit-4.10.jar lib/log4j-api-2.0.jar lib/log4j-core-2.0.jar lib/lombok-1.16.4.jar lib/lucene-analyzers-common-5.5.0.jar lib/lucene-analyzers-smartcn-5.5.0.jar lib/lucene-core-5.5.0.jar lib/lucene-grouping-5.5.0.jar lib/lucene-queries-5.5.0.jar lib/lucene-queryparser-5.5.0.jar lib/mysql-connector-java-5.1.38-bin.jar

其中Manifest-Version表示版本號,一般由IDE工具自動生成,在編寫MANIFEST文件的過程中,有如下注意點(diǎn)

  • Main-Class是jar文件的主類,程序的入口
  • Class-Path指定需要的jar,多個jar必須要在一行上,多個jar之間以空格隔開,如果引用的jar在當(dāng)前目錄的子目錄下,windows下使用\來分割,linux下用/分割
  • 文件的冒號后面必須要空一個空格,否則會出錯
  • 文件的最后一行必須是一個回車換行符,否則也會出錯

多條java jar命令的執(zhí)行順序問題

通常情況下,我們會在服務(wù)器上配置shell腳本去定時(shí)調(diào)用自己的Jar包,但是當(dāng)shell腳本中存在多條java -jar命令時(shí),其執(zhí)行情況是怎么樣的呢?是同時(shí)并行執(zhí)行,還是挨個按順序執(zhí)行呢?經(jīng)過測試得出,多條java -jar命令是按順序執(zhí)行的,并且只有在第一條java -jar命令執(zhí)行完畢后,才會執(zhí)行下一條java -jar命令,依次類推。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java發(fā)起http請求的完整步驟記錄

    Java發(fā)起http請求的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于Java發(fā)起http請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Idea里github的圖形化操作配置方法

    Idea里github的圖形化操作配置方法

    這篇文章主要介紹了Idea里github的圖形化操作配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • springboot無法跳轉(zhuǎn)頁面的問題解決方案

    springboot無法跳轉(zhuǎn)頁面的問題解決方案

    這篇文章主要介紹了springboot無法跳轉(zhuǎn)頁面的問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟

    SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟

    這篇文章主要介紹了SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot使用Sa-Token實(shí)現(xiàn)路徑攔截和特定接口放行

    SpringBoot使用Sa-Token實(shí)現(xiàn)路徑攔截和特定接口放行

    這篇文章主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)路徑攔截和特定接口放行,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • 使用springboot不自動初始化數(shù)據(jù)庫連接池

    使用springboot不自動初始化數(shù)據(jù)庫連接池

    這篇文章主要介紹了使用springboot不自動初始化數(shù)據(jù)庫連接池,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java獲取web容器地址的方法

    java獲取web容器地址的方法

    java獲取web容器地址的方法,需要的朋友可以參考一下
    2013-04-04
  • Java?Base64編碼方法詳解及實(shí)例解析

    Java?Base64編碼方法詳解及實(shí)例解析

    Base64是一種用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成文本數(shù)據(jù)的編碼方式,在本文中,我們介紹了Base64.encodeBase64String方法的用途和功能,它是Java語言中用于Base64編碼的一個重要工具,需要的朋友可以參考下
    2023-09-09
  • SpringBoot設(shè)置Json返回字段為非空問題

    SpringBoot設(shè)置Json返回字段為非空問題

    這篇文章主要介紹了SpringBoot設(shè)置Json返回字段為非空問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java 如何使用Velocity引擎生成代碼

    Java 如何使用Velocity引擎生成代碼

    代碼生成器,可以有效減少編寫重復(fù)代碼,快速實(shí)現(xiàn)簡單的業(yè)務(wù)邏輯,也能讓我們的代碼保持一致。那目前,我們看到的代碼生成器,大部分是基于velocity引擎模板生成的,接下來我們就學(xué)習(xí)一下如何實(shí)現(xiàn)代碼生成器。
    2021-06-06

最新評論

德清县| 成武县| 阿克苏市| 蚌埠市| 金乡县| 永清县| 贞丰县| 和林格尔县| 连江县| 应城市| 五大连池市| 金阳县| 吐鲁番市| 罗定市| 西宁市| 故城县| 龙井市| 贵溪市| 读书| 赞皇县| 廊坊市| 望都县| 临洮县| 万山特区| 年辖:市辖区| 垣曲县| 邛崃市| 灵寿县| 衡阳市| 密云县| 剑河县| 赣州市| 新乡市| 龙胜| 鹤壁市| 文成县| 灵川县| 九龙坡区| 内黄县| 团风县| 辛集市|