Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时加载Java字节码_Java_Classloader_Bytecode - Fatal编程技术网

在运行时加载Java字节码

在运行时加载Java字节码,java,classloader,bytecode,Java,Classloader,Bytecode,我得到了一些java字节码(经过编译的java源代码),它是在我的程序中生成的。现在我想将这个字节码加载到当前运行的JavaVM中,并运行一个特定的函数。我不确定如何实现这一点,我对Java类加载器进行了一些研究,但没有找到直接的方法 我找到了一个解决方案,它在硬盘上有一个类文件,但是我得到的字节码是在一个字节数组中,我不想把它写到磁盘上,而是直接使用它 谢谢 如果字节码不在运行程序的类路径上,则可以使用URLClassLoader。从 您需要编写一个自定义类加载器来重载findClass方法

我得到了一些java字节码(经过编译的java源代码),它是在我的程序中生成的。现在我想将这个字节码加载到当前运行的JavaVM中,并运行一个特定的函数。我不确定如何实现这一点,我对Java类加载器进行了一些研究,但没有找到直接的方法

我找到了一个解决方案,它在硬盘上有一个类文件,但是我得到的字节码是在一个字节数组中,我不想把它写到磁盘上,而是直接使用它


谢谢

如果字节码不在运行程序的类路径上,则可以使用URLClassLoader。从


您需要编写一个自定义类加载器来重载findClass方法

public Class findClass(String name) {
    byte[] b = ... // get the bytes from wherever they are generated
    return defineClass(name, b, 0, b.length);
}

我的问题不太清楚:我没有类文件,只有字节数组,我想直接加载它。无论如何谢谢你!请随意编辑您的问题,使其更加精确。引用的代码适用于硬盘上的类文件。谢谢,听起来像是一种获取的方法,但是没有直接的方法可以不编写一个custon类加载器?至少到目前为止我还没有找到任何一个。我认为在这个链接下,你应该找到你想要的:查看最后一节“类加载器加载/重新加载示例”我的问题不太清楚:我没有类文件,只有字节数组,我想直接加载它。无论如何谢谢你!我很确定我的链接提供了这一点。至少我通过它发现了这一点:,int,int)而且显然,您可以始终将字节数组保存到临时目录中。
public Class findClass(String name) {
    byte[] b = ... // get the bytes from wherever they are generated
    return defineClass(name, b, 0, b.length);
}