介紹java -cp & java -jar的區別
導讀 | java -cp 和 -classpath 一樣,是指定類執行所依賴其他類的路徑,通常是類庫,jar包之類,需要全路徑到jar包,window上分號“;” |
java -cp和-classpath一樣,是指定類執行所依賴其他類的路徑,通常是類庫,jar包之類,需要全路徑到jar包,window上分號“;”
格式:
java -cp .;myClass.jar packname.mainclassname
表示式支援萬用字元,例如:
java -cp .;c:\classes01\myClass.jar;c:\classes02\*.jar packname.mainclassname java -jar myClass.jar
執行該 時,會用到目錄META-INF\MANIFEST.MF檔案,在該檔案中,有一個叫Main-Class的引數,它說明了java -jar 執行的類。
用maven匯出的包中,如果沒有在pom檔案中將依賴包打進去,是沒有依賴包。
1.打包時指定了主類,可以直接用
java -jar xxx.jar。
2.打包是沒有指定主類,可以用j
ava -cp xxx.jar 主類名稱(絕對路徑)。
3.要引用其他的jar包,可以用
java -classpath $CLASSPATH:xxxx.jar 主類名稱(絕對路徑)。其中
-classpath 指定需要引入的類。
下面基於pom和META-INF\MANIFEST.MF兩個檔案的配置,進行了三種情況的測試:
pom.xml的build配置:
<build> <!--<finalName>test-1.0-SNAPSHOT</finalName>--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>test.core.Core</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <!--下面是為了使用 mvn package命令,如果不加則使用mvn assembly--> <executions> <execution> <id>make-assemble</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
META-INF\MANIFEST.MF的內容:
Manifest-Version: 1.0 Main-Class: test.core.Core
1.pom中build指定mainClass 但是 META-INF\MANIFEST.MF檔案中沒有指定Main-Class: test.core.Core
java -jar test-jar-with-dependencies.jar //執行成功 java -cp test-jar-with-dependencies.jar test.core.Core //執行失敗,提示jar中沒有主清單屬性
2.pom中build沒有指定mainClass 但是 META-INF\MANIFEST.MF檔案中指定了Main-Class: test.core.Core
java -jar test-jar-with-dependencies.jar //執行失敗,提示jar中沒有主清單屬性 java -cp test-jar-with-dependencies.jar test.core.Core //執行成功
3.pom中build指定mainClass && META-INF\MANIFEST.MF檔案中增加了Main-Class: test.core.Core
java -cp test-jar-with-dependencies.jar test.core.Core //執行成功 java -jar test-jar-with-dependencies.jar //執行成功
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2782816/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jar包和war包的介紹與區別JAR
- jar包、war包和ear包的介紹與區別JAR
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- Java 之String、StringBuffer 和 StringBuilder 三者區別介紹JavaUI
- java浮點型別案例介紹Java型別
- Java介紹Java
- Java中抽象類和介面的介紹及二者間的區別Java抽象
- java,javac,java -version的區別Java
- npm與cnpm的區別介紹NPM
- java-ToStringBuilder介紹JavaUI
- Java Selenide 介紹&使用JavaIDE
- java集合類介紹Java
- Android原始碼編譯jar包BUILD_JAVA_LIBRARY 與BUILD_STATIC_JAVA_LIBRARY的區別(一)Android原始碼編譯JARUIJava
- java -jar demo.jarJavaJAR
- FTP和TFTP的區別與介紹FTP
- java註解的簡單介紹Java
- Java中15種鎖的介紹Java
- java語言的入門介紹Java
- Java常用的5大框架介紹!Java框架
- Java中的AI庫大全介紹JavaAI
- Java 中關於protected的介紹Java
- Java字串編碼介紹Java字串編碼
- java ShutdownHook介紹與使用JavaHook
- Java Stream API groupingBy()介紹JavaAPI
- Java 20 新功能介紹Java
- Java_異常介紹Java
- Java元註解介紹Java
- SAP Java Connector 元件介紹Java元件
- Java 18 新功能介紹Java
- Java 16 新功能介紹Java
- Java教程之RabbitMQ介紹JavaMQ
- 【Java】equals 和 == 的區別Java
- Java基礎知識篇——Java基本介紹Java
- ?【Java技術專區】「探針Agent專題」Java Agent探針的技術介紹(1)Java
- java-jar啟動jar包JavaJAR
- 在cmd/powershell中使用java/javac -cp/--class-path命令連結多個jar包JavaJAR
- Java併發:ThreadLocal的簡單介紹Javathread
- 簡單介紹java中的equals()方法Java