“java -cp”和“java -jar”之间的区别?

2022-08-31 07:51:44

使用
和 运行 Java 应用程序有什么区别?对于运行 Java 应用程序,其中一个是否优先于另一个?我的意思是这些方法中哪一种对JVM来说更昂贵(根据他们的机器资源使用情况)?java -cp CLASSPATHjava -jar JAR_FILE_PATH

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


答案 1

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

我不期望任何一个版本有任何性能优势或劣势。它只是告诉jvm哪个类用于主线程,以及在哪里可以找到库。


答案 2

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

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

您可以在此处此处找到有关此内容的更多信息。

PS:并且是同义词。-cp-classpath


推荐