4

我有一个 C# 应用程序,我需要在其中下载并运行 JAR 文件,而无需将其保存到磁盘。这在 C# 中可能吗?我可以通过 WebClient 将文件下载到磁盘(这是我在发布时所做的)并通过保存然后删除的批处理脚本启动它,但我想更进一步,不让任何东西接触驾驶。

谢谢。

4

2 回答 2

1

JAR 文件需要由 JVM 的 javaw.exe 执行。另一个进程无权进入您的虚拟内存空间并读取文件数据。除非两个进程合作并使用共享内存部分,否则不会。你从 javaw.exe 得不到这样的合作,它需要一个文件。

这在 Windows 中不是问题,因为 javaw.exe 实际上会从内存中读取文件。当您在程序中写入文件时,实际上是写入文件系统缓存。它在 RAM 中缓冲文件数据,延迟将其写入磁盘。只要文件不是很大(千兆字节或更多)并且您不会等待太长时间来启动 java(分钟)并且机器有足够的 RAM(千兆字节或两个)然后 javaw.exe 从文件中读取文件系统缓存。RAM,而不是磁盘。与旧的 RAM 磁盘完全相同的想法。

于 2012-04-14T15:05:02.103 回答
1

您可以编写一个特殊的 Java 类加载器,它通过进程间通信 (IPC) 从 .NET 进程而不是文件加载类。此外,您还需要一个小型启动器 JAR,它首先安装类加载器,然后执行通过 IPC 检索到的 JAR。您需要在 .NET 应用程序中实现 IPC 通信的服务器部分。

但是这值得吗?如此复杂的软件有什么好处?

于 2012-04-14T16:15:00.027 回答