在使用jar运行java程序或解压缩包之间是否有任何差异? 现在我遇到了一个奇怪的探测器。我有一个搜索程序。当我用jar运行它时,没关系。 当我运行它只是将包解压缩到jar,然后gc日志是
答案 0 :(得分:1)
与JVM的观点没有区别。 JVM知道从文件系统或zip文件透明地加载类。
我并不完全明白哪个GC日志是这样的,但我坚信如果你从jar或unpacked类路径运行java程序有任何不同,可能是由
引起的另一种选择是,如果您尝试运行的程序以编程方式(在应用程序层上)使用自己的类路径进行交易。我看到程序假定它必须从名为mycompany.jar
的jar中执行。否则它不起作用。
答案 1 :(得分:1)
稍微扩大AlexR的答案;与JVM的观点没有区别,但是从资源的角度来看可能存在差异。
那是:
java -cp test.jar com.company.test
和
unzip -d test test.jar
java -cp test com.company.test
在某些特定情况下可以产生不同的结果。我能想到的唯一一个就是在阅读ZIP文件资源时。从JAR文件中检索资源的标准资源阅读器无法传递给ZipFileReader,而从磁盘上的文件传入的资源可以是。
那就是说,鉴于你所看到的差异,这不太可能是你的问题,而且这门课程几乎肯定是其中之一:
java -jar test.jar
和java -cp test.jar com.company.test
不是一回事,可能有不同的类路径。请查看AlexR's answer以获取其他建议。