我在这里有一个真正的头脑.我尝试了一切,到处搜寻.它来自我继承了测试JAR的应用程序.
(它由GUI前端和执行实际检查的命令行应用程序组成.GUI通过在自身上启动新的JVM来运行命令行应用程序[java -cp"its.jar"com.different.mainClass].我知道这是一个糟糕的设计,但可能是相关的.)
无论如何,这个程序包含一些嵌套在两个for循环中的反射调用.问题是当应用程序被JAR时,第一次反射调用每次迭代只需要一秒钟.但是当它从类运行时,需要几毫秒.
实际上,这意味着这个命令:
java -jar myjar.jar
Run Code Online (Sandbox Code Playgroud)
需要几个小时
这个命令:
java -cp "...[bunch of jars];myjar.jar" com.myclasses.main
Run Code Online (Sandbox Code Playgroud)
需要几分钟.
正在测试的JAR总是一个罐子.区别仅在于测试应用程序.
我们非常感谢任何想法或途径.谢谢!