【问题标题】:JAVA - Run external jar file at startJAVA - 在启动时运行外部 jar 文件
【发布时间】:2018-02-23 06:18:47
【问题描述】:

我想创建一个可以运行的应用程序,它有一个文件夹,其中包含带有迷你游戏的 jar 文件。我想单独创建这些小游戏,因为这样更容易交换游戏。我只是不知道如何将这些 jar 文件加载到我的另一个已经运行的应用程序中,这样我就可以访问 jar 文件中的类并使用我的注释调用正确的方法。

那么,TL;DR,我如何在运行时将类添加到我的类路径?

致以诚挚的问候, 斯坦

【问题讨论】:

  • add classes on runtime 是什么意思?无法在应用程序中获得您想要的运行时行为。
  • @Ankit 我需要能够在主应用程序第一次运行时将 jar 文件添加到类路径中。所以我可以轻松地交换“小游戏”(jar 文件)

标签: java class load runtime


【解决方案1】:

在我看来,你正在做的可能不是最好的方法。 话虽如此,这里有一个解释可以帮助你实现你想要的:

Java 与ClassLoader 一起工作,这是一个从特定路径加载类的Java 对象,通常是Java 类路径。为了动态加载 jar,您可以简单地创建一个带有 URL 引用您的 jar 的 URLClassLoader,或者将 jar URL 添加到当前的 ClassLoader 或系统 ClassLoader,具体取决于您的用例。加载 jar 后,您将能够实例化 Java 类的实例。 以下是使用特定 jar 创建新 Classloader 的示例:

URL url = new File(jarPath).toURI().toURL();
URLClassLoader classLoader = new URLClassLoader(url);
Object yourObject = Class.forName(className, true, classLoader).newInstance();

当然,您应该使新实例的创建适应您的类等。

【讨论】:

  • 您介意分享一下您认为最好的方法吗?感谢您的回答顺便说一句,工作。
  • @Stannies 当您需要在构建时动态加载未知的 jar 时使用此代码。如果事先知道 jars,只需将它们全部放在项目的 class_path 中,然后您就可以引用它们的类,而无需加载 jars 等。
猜你喜欢
  • 1970-01-01
  • 2013-06-08
  • 2011-09-18
  • 2011-02-24
  • 2017-07-09
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
相关资源
最近更新 更多