由cp与jar执行的scala-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库包含在依赖项(MANIFEST(中。-cp和-jar有什么区别?我认为在这种情况下应该有相等的

谢谢!

java -cp jarfile classname

使用指定的类路径(-cp(执行类名。不使用-cp选项,您可以简单地依靠CLASSPATH变量来确定java在哪里找到类。

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文件中的哪个类是应用程序的入口指向您可以在舱单,具有一般形式:

主类:类名

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

摘录:

指定要包含在小程序或应用程序的清单文件。类路径标头采用以下表格:

类路径:jar1名称jar2名称目录名称/jar3名称

-jar选项尝试从jar文件中定义的主类执行static main方法,然后为其提供参数removeTSfromCorpus

-cp选项认为您提供了一个类路径,然后尝试从removeTSFromCorpus类运行main方法。

最新更新