我有一个C#应用程序,我需要下载并运行一个JAR文件,而不是保存到磁盘。这可能在C#中吗?我可以通过WebClient将文件下载到磁盘上(这是我在发布时所做的)&通过保存然后删除的批处理脚本启动它,但我想更进一步,没有任何东西触摸驱动器。
感谢。
答案 0 :(得分:1)
JAR文件需要由javaw.exe(JVM)执行。另一个进程无法访问您的虚拟内存空间并读取文件数据。除非两个进程合作并使用共享内存部分。你没有从javaw.exe那里得到这样的合作,它需要一个文件。
这在Windows中不是问题,因为javaw.exe实际上会从内存中读取文件。在程序中编写文件时,实际上是写入文件系统缓存。其中缓冲RAM中的文件数据,将其延迟写入磁盘。只要文件不是很大(千兆字节或更多)并且你没有等待太长时间来启动java(分钟)并且机器有足够的RAM(千兆字节或两个),那么javaw.exe从文件中读取文件系统缓存。 RAM,而不是磁盘。与旧的RAM磁盘完全相同。
答案 1 :(得分:1)
您可以编写一个特殊的Java类加载器,它通过.NET进程而不是文件通过进程间通信(IPC)加载类。此外,您需要一个小型启动程序JAR,它首先安装类加载器,然后执行通过IPC检索的JAR。并且您需要在.NET应用程序中实现IPC通信的服务器部分。
但值得吗?这样一个复杂的软件会带来什么好处?