我想创建一个运行的应用程序,它有一个包含迷你游戏的jar文件的文件夹。我想单独创建这些迷你游戏,因为这样可以更容易地进出游戏。我只是不知道如何将这些jar文件加载到我正在运行的其他应用程序中,这样我就可以访问jar文件中的类并使用我的注释调用正确的方法。
那么,TL; DR,如何在运行时向类路径添加类?
亲切的问候, 斯坦
答案 0 :(得分:1)
在我看来,你所做的可能不是最好的方式。 话虽如此,这里的解释将帮助您实现您想要的目标:
Java与ClassLoader
一起使用,URLClassLoader
是一个Java对象,它从特定路径加载类,通常是Java class_path。为了动态加载jar,您只需创建一个URL
,其中URL
引用您的jar,或者将jar ClassLoader
添加到当前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();
的示例:
spark-submit --driver-java-options "-Dlog4j.configuration=file:///absolute/path/to/log4j.properties" job.jar
当然,您应该将新实例创建调整到您的类等。