【问题标题】:Receiving new classes over a network通过网络接收新课程
【发布时间】:2012-06-20 16:24:04
【问题描述】:

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

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

【问题讨论】:

    标签: java classpath classloader


    【解决方案1】:

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

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

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

    见:ClassLoaderUtil.defineClass()

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

    【讨论】:

    • 谢谢! Jodd 的 ClassLoaderUtil 使这变得非常简单。
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多