Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 如何从类[3;]对象获取二进制数据?_Java_Scala_Reflection - Fatal编程技术网

Java 如何从类[3;]对象获取二进制数据?

Java 如何从类[3;]对象获取二进制数据?,java,scala,reflection,Java,Scala,Reflection,我想通过网络发送类数据,我需要从类的名称获取.class文件中的二进制数据。我想使用默认的类加载器,然后通过网络发送加载的数据。我该怎么做?我使用的是scala 2.9.0.1和jre6,RMI允许您通过网络加载类文件。这可能比推出自己的解决方案更容易。查看一下用文件分隔符替换完全限定类名中的句点,并在结果中附加“.class”,这将是.class文件在类路径中的位置。然后使用类加载器以流的形式访问文件 val location = className.replaceAll("\\.",File

我想通过网络发送类数据,我需要从类的名称获取.class文件中的二进制数据。我想使用默认的类加载器,然后通过网络发送加载的数据。我该怎么做?我使用的是scala 2.9.0.1和jre6,RMI允许您通过网络加载类文件。这可能比推出自己的解决方案更容易。查看一下

用文件分隔符替换完全限定类名中的句点,并在结果中附加“.class”,这将是.class文件在类路径中的位置。然后使用类加载器以流的形式访问文件

val location = className.replaceAll("\\.",File.separator) + ".class"
val stream = ClassLoader.getSystemClassLoader().getResourceAsStream(location)
//send the stream to your remote location

是否要将类实例中的数据发送到类本身的字节码中?我使用的是scala remote actors。建立连接后,我将类的一个实例从服务器发送到客户端。如果在反序列化时找不到类定义,我会向服务器发送请求。这里的问题是,如果服务器打包在一个jar文件中,我无法找到要返回的内容。如果我知道.class文件的路径,那么整个过程就是设置和工作的。但是如果我想将它打包到一个jar中,它会失败,因为我无法确定类文件的路径。无论它是否在一个jar中,它都应该获取类路径中的任何内容。如果您遇到问题,我猜问题更可能是您正在使用哪个类加载器。如果在名为MyClass的类上尝试此操作,请尝试以下操作:MyClass.class.getClassLoader().getResourceAsStream(…)