通常,Java应用程序以start参数运行 - 指向.jar或.class的路径。从RAM运行Java应用程序
但如何运行一个Java如果我的文件在内存中?
如果不存在这些方法,都不可能与参数
byte[] FileFromMemory
或
bufferedreader FileFromMemory
我试图从С运行++应用程序
通常,Java应用程序以start参数运行 - 指向.jar或.class的路径。从RAM运行Java应用程序
但如何运行一个Java如果我的文件在内存中?
如果不存在这些方法,都不可能与参数
byte[] FileFromMemory
或
bufferedreader FileFromMemory
我试图从С运行++应用程序
您可以编写客户类加载器来执行此操作,或使用反射将类加载到现有类加载器中。这两种方法都被认为是非常高级的主题,所以我会重新考虑这一点,除非你有多年的Java经验。
最简单的解决方案是将文件写入磁盘,例如像tmpfs
这样的Ramdisk这是一个更简单(如果效率更低)的方法来做到这一点。
(+1)为重新考虑的建议。 – NPE
Ramdisk不适合我。存储在磁盘上的Java文件。但我需要将其存储并传输加密,并在启动前解密。并且在磁盘上解密而不保存启动。 – user1164554
在这种情况下,您需要自定义ClassLoader。您需要重写findClass以执行查找并根据需要定义类。以URLClassLoader的来源为例。 –
如果编译Java您代码(.jar
/.class
)驻留在RAM中,而不是在文件系统上,您需要提供自己的class loader。
你刚刚拥有Java文件的来源,还是类文件的实际字节码? –
两者:类文件的源代码和字节代码。我有一点使用类加载器进行类检测的经验:if(classloader.getResource(“my.class”)!= null) – user1164554