我这里有一个头疼的问题。我已经尝试了所有方法,搜索了所有地方。这个问题来自于我继承的一个测试JAR文件的应用程序。
(它由GUI前端和实际检查操作的命令行应用程序组成。GUI通过在自身上启动新的JVM [java -cp "itself.jar" com.different.mainClass] 来运行命令行应用程序。这是一个不好的设计,我知道,但可能与此相关。)
无论如何,这个程序包含一些嵌套在两个for循环中的反射调用。问题是当应用程序被打包成JAR文件时,每次迭代第一个反射调用需要一秒钟的时间。但是当它从类中运行时,只需要几毫秒。
实际上,这意味着这个命令:
java -jar myjar.jar
需要翻译的内容:
需要几个小时才能完成。
这个命令:
java -cp "...[bunch of jars];myjar.jar" com.myclasses.main
只需要几分钟。
被测试的JAR文件始终是一个JAR文件,区别仅在于测试应用程序。
非常感谢您提供任何想法或追求的途径。谢谢!
myjar.jar
是测试应用程序?只有在它自己运行时才会出现性能问题,还是所有的 jar 包都会出现这个问题? - matts