【问题标题】:Running a Java application from RAM从 RAM 运行 Java 应用程序
【发布时间】:2012-01-23 08:45:40
【问题描述】:

通常,Java 应用程序使用 start 参数运行 - .jar 或 .class 的路径。

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

如果这些方法不存在,有可能通过参数编译Java

byte[] FileFromMemory

bufferedreader FileFromMemory

我正在尝试从 С++ 应用程序运行

【问题讨论】:

  • 你只有Java文件的来源,还是类文件的实际字节码?
  • Both:类文件的源代码和字节码。我对使用类加载器进行类检测有一点经验: if(classloader.getResource("my.class") != null)

标签: java file memory jvm


【解决方案1】:

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

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

【讨论】:

  • (+1) 建议重新考虑。
  • Ramdisk 不适合我。存储在磁盘上的 Java 文件。但我需要存储它并加密传输,并在发射前解密。并启动而不保存在磁盘上解密。
  • 在这种情况下,您需要自定义类加载器。您需要重写 findClass 以执行查找并根据需要定义类。以 URLClassLoader 的源码为例。
【解决方案2】:

如果您的代码 (.jar/.class) 位于 RAM 中而不是文件系统中,则您需要提供自己的 class loader

【讨论】:

    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2013-09-10
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多