gpt4 book ai didi

java - 在运行时替换 jar 时发生 ClassNotFoundException

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:47 27 4
gpt4 key购买 nike

我运行了一个打包在A.jar中的java应用程序,其中使用了B.jar中的一些类。

所有相关的 jar 都放置在特定目录中,该目录包含在类路径中。

程序是这样的:

main(){

run method ClassA.M1() in A.jar; //the method may keep running for 2 minutes

do some other prepare;

call method ClassB.M2 in B.jar;

}

当程序运行M1时,我手动将B.jar替换为较新的版本(名称也是B.jar)。

但是,程序抛出 ClassNotFoundException。

然后,再次启动程序,一切正常。

所以,我的问题是:为什么会抛出ClassNotFoundException,因为jar路径和jar名称没有改变,类加载器应该毫无问题地加载它。

请给我一些指示。

最佳答案

您不能在运行时简单地通过将 jar 文件替换为同名文件来更改它们,因为类加载器可能已经从中加载了一些类。

如果您需要支持此类行为,则需要研究提供热替换机制的库或框架。

这里有两篇文章可以帮助您更好地理解类加载器:

Stack OverFlow 上还有很多关于此主题的文章,甚至还有相关问题,我建议您阅读更多内容。

关于java - 在运行时替换 jar 时发生 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14338672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com