我有一个关于从网络启动 JAR 文件的小问题。我的情况是这样的:
与我的应用程序在服务器上共享网络目录。客户端正在从该网络位置运行 JAR 文件。除非有人失去与服务器的连接,否则一切正常。
当应用程序(JAR)在客户端机器上运行并且连接断开时,任何以前从未使用过的类都会被使用,则会引发 NoClassDefFoundError 异常。
我知道 JVM 在需要时会在运行时加载类。所以我的问题是:
我可以在启动应用程序之前以某种方式告诉 JVM,将整个 JAR(JAR 中的所有类)加载到内存中吗? 我不能使用 Class.for("...") 或任何其他方式来加载一个类,因为我“不知道”所有类。
我可以以某种方式告诉 JVM 缓存 JAR 文件,即。到本地硬盘上的临时文件夹? 我不想让其他应用程序 (JAR) 从网络复制我的应用程序然后启动它。
如果我仍然想将我的 JAR 放在共享网络位置上,我还有其他选择吗?:)