Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA-在开始时运行外部jar文件_Java_Class_Load_Runtime - Fatal编程技术网

JAVA-在开始时运行外部jar文件

JAVA-在开始时运行外部jar文件,java,class,load,runtime,Java,Class,Load,Runtime,我想创建一个运行的应用程序,它有一个文件夹,其中包含小游戏的jar文件。我想分别创建这些小游戏,因为这样可以更容易地交换游戏。我只是不知道如何将这些jar文件加载到另一个已经运行的应用程序中,这样我就可以访问jar文件中的类,并使用注释调用正确的方法 因此,TL;DR,如何在运行时将类添加到类路径 致以亲切的问候, 斯坦在我看来,你所做的可能不是最好的方式。 话虽如此,以下解释将帮助您实现您的目标: Java使用ClassLoader,它是一个Java对象,从特定路径(通常是Java类路径)加载

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

因此,TL;DR,如何在运行时将类添加到类路径

致以亲切的问候,
斯坦

在我看来,你所做的可能不是最好的方式。 话虽如此,以下解释将帮助您实现您的目标:

Java使用
ClassLoader
,它是一个Java对象,从特定路径(通常是Java类路径)加载类。为了动态加载jar,您只需创建一个引用jar的
URL
URLClassLoader
,或者根据您的用例,将jar
URL
添加到当前
ClassLoader
或系统
ClassLoader
。加载jar后,您将能够实例化Java类的一个实例。 以下是使用特定jar创建新的
类加载器的示例:

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

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

什么是
在运行时添加类
?无法了解应用程序中需要的运行时行为。@Ankit我需要能够在主应用程序首次运行时将jar文件添加到类路径中。所以我可以很容易地交换“迷你游戏”(jar文件),你介意分享一下你认为最好的方式吗?谢谢你的回答,顺便说一句,有用。@Stannies当你需要动态加载构建时未知的jar时,可以使用这段代码。如果JAR是预先知道的,只需将它们全部放在项目的class_路径中,然后您就可以引用它们的类,而无需加载JAR等。