执行内存jar

sha*_*awn 5 java jar process inter-process-communicat

假设我有一个java进程以byte []的形式从可信进程接收可运行的jar文件,有没有办法调用它而不必将jar文件写入磁盘然后调用它(启动一个新的)正在运行jar的进程)?

San*_*osh 8

这是一种可以实现它的方法:

  1. ByteArrayInputStreambyte []收到的创建一个.
  2. 现在用于JarInputStream创建jar文件的内存表示.

    ByteArrayInputStream bis = new ByteArrayInputStream(byteArray); JarInputStream jis = new JarInputStream(bis);

  3. 这样你就可以在内存中加载jar.

  4. 现在,您可以使用自定义类加载器来进一步处理它.以下是您可以参考的一个示例.


Ada*_*dam 2

最简单的方法是将其写入虚拟磁盘并完全避免内存中的想法。