使用jar或未打包的程序运行Java程序之间有什么区别吗?
现在我遇到了一个怪异的探员。我有一个搜索程序。当我用罐子运行它时,就可以了。
当我只用解包到jar的包运行它时,那么gc日志是
最佳答案
从JVM角度看没有什么区别。 JVM知道透明地从文件系统或zip文件加载类。
我不完全了解这是哪个GC日志,但是我坚信,如果您从jar或解压缩的类路径运行Java程序有任何差异,则可能是由于
真实类路径的差异
访问文件系统中特定路径的问题(导致实际类路径不同)
您传递给JVM的选项的差异(-D和-X选项)
可能还有其他环境差异。例如,您可能是第一次运行,用户A是第二次运行,其次是用户B。或者您更改了工作目录。
另一种选择是,如果您尝试运行的程序以编程方式(在应用程序层上)处理自己的类路径。我看到了一个程序,假定该程序必须从名为mycompany.jar
的jar中执行。否则它不起作用。