2010-01-18 76 views
0

我的Java程序在运行时动态加载类。所有课程都位于同一个罐子里。Java:更新jar文件时加载类

部署新的jar文件后,我有时在复制jar文件时发生错误(NoClassDefFoundError等)。当我下一次运行程序时,这会消失。有没有办法预先加载类,以便我的程序在更新jar时不受影响?

我想我可以创建所有类的实例,然后clone()它们,但也许有更好的方法?

+0

请解释你的应用程序如何加载dinamically类,只需“Class.forName”?或者更复杂的东西来重新装入更新的罐子?如果是这种情况,您可以进行dir重命名,以在不等待文件副本的情况下更改新的类路径。或者也许使用你自己的类加载器(这并不难,我可以引导你) – helios 2010-01-18 21:33:19

+0

我想我可能会尝试一个自定义的类加载器。我已经阅读了一些文章,在此花费一些时间应该很有趣。 – AnonCow 2010-01-21 21:07:20

回答

1

即使您加载所有类,您仍可能会从资源中获取错误。

如果可能,我建议部署到不同的位置。或者,如果您可以管理类加载,请将jar复制到临时文件(例如,自动为http URL执行)或存储器中。