使用使用Java应用程序有什么区别java -cp CLASSPATH
和java -jar JAR_FILE_PATH
?其中一个比另一个人更喜欢运行Java应用程序吗?我的意思是,对于JVM而言,这些方式中的哪种方式(根据他们的机器资源使用)?
哪一个会导致JVM在尝试运行应用程序时产生更多的线程?
答案
我更喜欢第一个启动Java应用程序的版本,因为它的陷阱较少(“欢迎来到Class Path Hell”)。第二个需要一个可执行的JAR文件,并且必须在JAR的清单内定义该应用程序的类Path(所有其他类Path声明都将被默默地忽略…)。因此,使用第二个版本,您必须查看罐子,阅读清单,并尝试找出ClassPath条目是否从存储罐子的位置有效…这是可以避免的。
我不希望这两个版本都有任何性能优势或缺点。它只是告诉JVM用于主线程以及可以找到库的位置。