如果我运行:
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
方法。