是否可以执行 运行nable JAR 并将其 运行 作为调用它的同一进程的一部分?
Is it possible to execute a runnable JAR and have it run as part of the same process from which it was called?
我有一个客户端应用程序和一个服务器应用程序。使用 JNA 的服务器是我需要使用的一些 dll 的包装器,因为长话短说,32 位 JVM 中没有足够的内存来 运行 客户端和服务器逻辑,因此需要单独的应用程序。
我需要能够在这两个应用程序之间共享内存 - 具体来说,我需要能够将指针从一个应用程序发送到另一个应用程序,反之亦然。我知道我可以从客户端 jar 中为服务器执行 运行nable JAR - 作为一个单独的进程。但是是否可以将它作为同一进程的一部分执行,只是在不同的线程上执行?这样我就可以将指针从一个发送到另一个。
这里有一些背景知识:
是的,这是可能的。有点。
- 为 JAR 文件创建一个新的 classloader。
- 使用 classloader,读取 MANIFEST.MF 资源并提取 JAR 的主要名称 class。
- 如果有 class-path 属性,解析它并创建相应的 classloader。
- 使用 classloader(s) 加载主要 class.
- 为
main(String[])
查找 Method
对象
- 使用
Method.invoke(...)
以适当的 "command line" 参数调用它。
问题是,当您执行此操作时,您启动的应用程序将与原始应用程序共享标准 i/o 流,以及系统属性、默认字符集、默认时区等内容向前。
而且我认为这不会解决您的 "not enough memory" 或 "not enough address space" 问题。
最后,64 位 JVM 不能 加载 32 位 DLL,反之亦然。
一种可能的替代方法是使用共享内存:
- Shared Memory between two JVMs
我有一个客户端应用程序和一个服务器应用程序。使用 JNA 的服务器是我需要使用的一些 dll 的包装器,因为长话短说,32 位 JVM 中没有足够的内存来 运行 客户端和服务器逻辑,因此需要单独的应用程序。
我需要能够在这两个应用程序之间共享内存 - 具体来说,我需要能够将指针从一个应用程序发送到另一个应用程序,反之亦然。我知道我可以从客户端 jar 中为服务器执行 运行nable JAR - 作为一个单独的进程。但是是否可以将它作为同一进程的一部分执行,只是在不同的线程上执行?这样我就可以将指针从一个发送到另一个。
这里有一些背景知识:
是的,这是可能的。有点。
- 为 JAR 文件创建一个新的 classloader。
- 使用 classloader,读取 MANIFEST.MF 资源并提取 JAR 的主要名称 class。
- 如果有 class-path 属性,解析它并创建相应的 classloader。
- 使用 classloader(s) 加载主要 class.
- 为
main(String[])
查找 - 使用
Method.invoke(...)
以适当的 "command line" 参数调用它。
Method
对象
问题是,当您执行此操作时,您启动的应用程序将与原始应用程序共享标准 i/o 流,以及系统属性、默认字符集、默认时区等内容向前。
而且我认为这不会解决您的 "not enough memory" 或 "not enough address space" 问题。
最后,64 位 JVM 不能 加载 32 位 DLL,反之亦然。
一种可能的替代方法是使用共享内存:
- Shared Memory between two JVMs