通过网络接收新课程

时间:2012-06-20 16:24:04

标签: java classpath classloader

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

请参阅:ClassLoaderUtil.defineClass()

这会隐藏ClassLoader详细信息,但使用ClassLoader执行您想要的操作 - 通过网络提取类字节 - 非常简单。您应该发布您在这里遇到的具体问题,使用您的一些代码,并且某人应该能够给您一个有用的答案,然后您将不再需要其他库。