2012-01-23 106 views
0

通常,Java应用程序以start参数运行 - 指向.jar或.class的路径。从RAM运行Java应用程序

但如何运行一个Java如果我的文件在内存中?

如果不存在这些方法,都不可能与参数

byte[] FileFromMemory 

bufferedreader FileFromMemory 

我试图从С运行++应用程序

+0

你刚刚拥有Java文件的来源,还是类文件的实际字节码? –

+0

两者:类文件的源代码和字节代码。我有一点使用类加载器进行类检测的经验:if(classloader.getResource(“my.class”)!= null) – user1164554

回答

5

您可以编写客户类加载器来执行此操作,或使用反射将类加载到现有类加载器中。这两种方法都被认为是非常高级的主题,所以我会重新考虑这一点,除非你有多年的Java经验。

最简单的解决方案是将文件写入磁盘,例如像tmpfs这样的Ramdisk这是一个更简单(如果效率更低)的方法来做到这一点。

+0

(+1)为重新考虑的建议。 – NPE

+0

Ramdisk不适合我。存储在磁盘上的Java文件。但我需要将其存储并传输加密,并在启动前解密。并且在磁盘上解密而不保存启动。 – user1164554

+0

在这种情况下,您需要自定义ClassLoader。您需要重写findClass以执行查找并根据需要定义类。以URLClassLoader的来源为例。 –

2

如果编译Java您代码(.jar/.class)驻留在RAM中,而不是在文件系统上,您需要提供自己的class loader