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

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

最佳答案

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

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

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


参见:ClassLoaderUtil.defineClass()

这将向您隐藏ClassLoader详细信息,但是使用ClassLoader进行所需的操作-通过网络提取类字节非常简单。您应该使用一些代码来发布您在此处遇到的特定问题,并且某人应该能够为您提供有用的答案,这样您就不需要其他库了。

关于java - 通过网络接收新类(class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11123908/

10-09 03:18