1

我正在写一些将接收新类型对象的东西。在它获取这些对象之前,我发送了这些新类型的类文件。当我读入新对象时,除非类文件位于运行类路径(bin 文件夹)的应用程序中,否则会抛出 ClassNotFoundException。

我想将我的类文件保存在系统的其他位置(Windows)。我研究过使用自定义类加载器,但未能成功使用。更简单的解决方案似乎只是添加另一个位置/类路径来查找类文件。但是将位置添加到 Windows CLASSPATH 变量似乎没有帮助。

4

1 回答 1

3

ClassLoader无论您如何注入类(通过网络或接触文件系统),您最终都需要使用 a来执行此类操作。

但是,有些库会为您处理这个问题,尤其是Jodd会处理这个问题。根据文档,如果您通过网络获取类字节,则可以使用单线添加类:

Class c = ClassLoaderUtil.defineClass("MyNewClass", classBytes);

看:ClassLoaderUtil.defineClass()

这将对您隐藏ClassLoader详细信息,但是使用ClassLoader来做您想做的事情 - 通过网络提取类字节 - 非常容易。您应该在此处发布您遇到的特定问题以及您的一些代码,并且应该有人能够给您一个有用的答案,然后您就不需要其他库了。

于 2012-06-20T16:35:34.173 回答