簡體   English   中英

scala jar文件由java執行 - cp與jar

[英]scala jar file executed by java - cp vs. jar

如果我跑:

java -jar corpus-tools-0.0.2.jar removeTSfromCorpus

它給了我錯誤:

Failed to parse the trailing argument list: 'removeTSfromCorpus'

但是,如果我跑:

java -cp corpus-tools-0.0.2.jar removeTSfromCorpus

它無縫地工作。 scala-library包含在依賴項中(MANIFEST)。 -cp和-jar有什么區別? 我認為在這種情況下應該是平等的

謝謝!

java -cp jarfile classname

使用指定的類路徑( -cp )執行classname。 您可以簡單地依賴CLASSPATH變量來確定java查找類的位置,而不是使用-cp選項。

java -jar jarfile

將使用指定的.jar文件並執行.jar文件MANIFEST中定義的Main-Class 這是java與獨立應用程序的近似值。 應用程序打包在.jar文件中,MANIFEST指定該.jar文件中的入口點。 有關詳細信息,請參見此處

所以(回答你的原始問題!)你的第一個例子將運行MANIFEST中指定的類,並且試圖以某種方式將removeTSFromCorpus解釋為命令行參數。 第二個示例將CLASSPATH設置為.jar文件,然后將removeTSFromCorpus作為類運行。

運行JAR時,應在MANIFEST.MF文件中指定主類和類路徑。

然后你就像運行它:

java -jar corpus-tools-0.0.2.jar

看到:

http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

提取

如果您有一個捆綁在JAR文件中的應用程序,則需要某種方法來指示JAR文件中的哪個類是應用程序的入口點。 您可以使用清單中的Main-Class標頭提供此信息,該標頭具有以下一般形式:

Main-Class:classname

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

提取:

您可以指定要包含在applet或應用程序的清單文件中的Class-Path頭字段中的類。 Class-Path標頭采用以下形式:

Class-Path:jar1-name jar2-name directory-name / jar3-name

-jar選項試圖從jar文件中定義的主類執行static main方法,然后為其提供參數removeTSfromCorpus

-cp選項認為您正在提供類路徑,然后嘗試從removeTSFromCorpus類運行main方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM