首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"java -cp“和"java -jar”的区别?

"java -cp“和"java -jar”的区别?
EN

Stack Overflow用户
提问于 2012-08-12 21:52:11
回答 6查看 158.1K关注 0票数 133

运行Java应用程序与使用

java -cp CLASSPATHjava -jar JAR_FILE_PATH?在运行Java应用程序时,它们中的哪一个是首选的?我的意思是,这些方法中哪一种对JVM来说更昂贵(根据它们的机器资源使用情况)?

哪一个会导致JVM在尝试运行应用程序时产生更多的线程?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-12 21:59:01

我更喜欢启动java应用程序的第一个版本,因为它有更少的陷阱(“欢迎来到类路径地狱”)。第二个类需要一个可执行的jar文件,并且必须在jar的清单中定义该应用程序的类路径(所有其他类路径声明将被默默忽略...)。因此,对于第二个版本,您必须查看jar,读取清单,并尝试从存储jar的位置找出类路径条目是否有效……这是可以避免的。

我认为这两个版本都不会有任何性能上的优势或劣势。它只是告诉jvm将哪个类用于主线程,以及在哪里可以找到库。

票数 105
EN

Stack Overflow用户

发布于 2012-08-12 21:56:11

使用-cp参数,您可以提供类路径,即程序在编译或运行时可能需要的其他类或库的路径。使用-jar,您可以指定要运行的可执行JAR文件。

您不能同时指定它们。如果你尝试运行java -cp folder/myexternallibrary.jar -jar myprogram.jar,那么它不会真正起作用。JAR的类路径应该在其清单中指定,而不是作为-cp参数。

您可以找到有关此herehere的更多信息。

PS:-cp-classpath是同义词。

票数 65
EN

Stack Overflow用户

发布于 2012-08-12 21:57:32

使用java -cp时,您需要提供完全限定的主类名称,例如

java -cp com.mycompany.MyMain

使用java -jar myjar.jar时,jar文件必须通过manifest.mf提供有关主类的信息,该信息包含在META-INF文件夹中的jar文件中

Main-Class: com.mycompany.MyMain

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11922681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档