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

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

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

問(wèn)題來(lái)源

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

在將Jar包部署到服務(wù)器上之后,設(shè)置CLASSPATH環(huán)境變量,運(yùn)行Java -jar ...命令出現(xiàn)ClassNotFoundException異常。之后又試用了諸多其它參數(shù)設(shè)置CLASSPATH,例如下面幾個(gè)命令,同樣都是報(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ù)中使用通配符需要注意

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

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

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

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

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

如果有多個(gè)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表示版本號(hào),一般由IDE工具自動(dòng)生成,在編寫MANIFEST文件的過(guò)程中,有如下注意點(diǎn)

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

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

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

總結(jié)

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

相關(guān)文章

  • 詳談Java中的事件監(jiān)聽(tīng)機(jī)制

    詳談Java中的事件監(jiān)聽(tīng)機(jī)制

    下面小編就為大家?guī)?lái)一篇詳談Java中的事件監(jiān)聽(tīng)機(jī)制。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 從0開(kāi)始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐

    從0開(kāi)始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐

    這篇文章主要介紹了從0開(kāi)始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐,結(jié)合具體入門項(xiàng)目分析了大數(shù)據(jù)java spark編程項(xiàng)目建立、調(diào)試、輸出等相關(guān)步驟及操作技巧,需要的朋友可以參考下
    2019-11-11
  • Spring?Boot?利用?XML?方式整合?MyBatis

    Spring?Boot?利用?XML?方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用?XML?方式整合?MyBatis,文章圍繞主題的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,組要的小伙伴可以參考一下
    2022-05-05
  • JDK1.8安裝與配置超詳細(xì)教程

    JDK1.8安裝與配置超詳細(xì)教程

    JDK1.8即為JDK8,JDK8是目前是最成熟最穩(wěn)定的版本,本文將詳細(xì)介紹JDK1.8的安裝與配置,需要的朋友可以參考下
    2023-03-03
  • MyBatis緩存功能原理及實(shí)例解析

    MyBatis緩存功能原理及實(shí)例解析

    這篇文章主要介紹了MyBatis緩存功能原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java返回可變引用對(duì)象問(wèn)題整理

    Java返回可變引用對(duì)象問(wèn)題整理

    在本篇文章里小編給大家分享的是關(guān)于Java返回可變引用對(duì)象問(wèn)題整理內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-04-04
  • SpringBoot左腳進(jìn)門之Maven管理家具體步驟

    SpringBoot左腳進(jìn)門之Maven管理家具體步驟

    Maven 是一個(gè)項(xiàng)目管理和整合工具,通過(guò)對(duì) 目錄結(jié)構(gòu)和構(gòu)建生命周期 的標(biāo)準(zhǔn)化, 使開(kāi)發(fā)團(tuán)隊(duì)用極少的時(shí)間就能夠自動(dòng)完成工程的基礎(chǔ)構(gòu)建配置,本文介紹SpringBoot左腳進(jìn)門之Maven管理家具體步驟,感興趣的朋友一起看看吧
    2024-12-12
  • Java?LocalDateTime常用操作方法

    Java?LocalDateTime常用操作方法

    這篇文章主要介紹了Java?LocalDateTime實(shí)用方法,Java8提供了新的時(shí)間接口LocalDateTime,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Java實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲

    Java實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Springboot通過(guò)谷歌Kaptcha?組件生成圖形驗(yàn)證碼功能

    Springboot通過(guò)谷歌Kaptcha?組件生成圖形驗(yàn)證碼功能

    Kaptcha是谷歌開(kāi)源的一款簡(jiǎn)單實(shí)用的圖形驗(yàn)證碼組件。我個(gè)人推薦它的最大原因是容易上手,采用約定大于配置的方式,快速契合到項(xiàng)目中,這篇文章主要介紹了Springboot通過(guò)谷歌Kaptcha組件生成圖形驗(yàn)證碼的方法,需要的朋友可以參考下
    2023-05-05

最新評(píng)論