2017-09-14 88 views
0

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

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

随着亲切的问候, 斯坦

+0

何谓'上runtime'添加类?没有得到它在你的应用程序中想要的运行时行为。 – Ankit

+0

@Ankit当主应用程序第一次运行时,我需要能够将jar文件添加到类路径中。所以我可以很容易地交换'minigames'(jar文件) – Stannies

回答

1

你在做什么可能是不走,在我看来最好的办法。 这就是说,这将帮助你实现你想要的结果:

Java与ClassLoader一起工作,它是一个Java对象,它从特定路径加载类,通常是Java class_path。为了动态加载罐子,您可以简单地创建一个URLClassLoader,其中URL引用您的罐子,或者将罐子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(); 

当然,你应该在新的实例创建适应类等

+1

你介意分享一下你认为最好的方法吗?感谢答案btw,工作。 – Stannies

+0

@Stannies当您需要动态加载构建时未知的罐子时,使用此代码。如果罐子是事先知道的,只需将它们全部放在项目的class_path中,然后就可以参考它们的类而不需要加载罐子等。 – zuckermanori

相关问题