java urlclassloader 的用法。只有在极少数情况下才需要吗?

标签 java classpath classloader urlclassloader

在哪种情况下,可以使用 URLClassLoader 从指定路径中的特定 jar 加载类?
例如。

URL url = new URL("file:///path/to/customClasses.jar");
URLClassLoader pluginLoader = new URLClassLoader(new URL[] { url });
Class<?> cl = pluginLoader.loadClass("apackage.MyCustomClass");

如果我想使用 customClasses.jar 中的类,我一直认为将此 jar 放在可从 CLASSPATH 访问的路径中就足够了。
然后在我的代码中只需使用 apackage.MyCustomClass
我想我在这里有一些误解或遗漏的地方,所以有人可以解释一下并举一个例子,说明上面这种方式加载类的片段何时有用?
谢谢!

最佳答案

我想说,根据您正在进行的编程类型,URLClassLoader 的使用应该很少发生。

通常,您将使用类加载器在运行时加载您无法提前预料到的类。

一个很好的例子是,如果您构建一个可以使用插件扩展的工具,并且插件在运行时加载。例如,Eclipse。

如果您在编译时有可用的 jar 并且位于命令行上,请将所需的 jar 文件添加到编译语句中。例如,

javac -cp /path/to/lib/customClasses.jar MyClassThatReferencesCustomClasses

如果您使用的是 Eclipse,请将 jar 添加到您的项目中,然后右键单击它并选择“添加到构建路径”。

问候,

关于java urlclassloader 的用法。只有在极少数情况下才需要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556328/

相关文章:

java - 如何在pom.xml中使用两个版本的itext jar文件?

java - 有 args.EQUAL() 的替代方法吗?

java - 数组对象未被修改。只有第一个元素不断变化。

java - 在 UBUNTU 中添加 JAR 类路径

java - 运行 JavaFX Gradle 应用程序时出现 NoClassDefFoundError StringUtils 或 Gson

java - 动态程序更新、运行时编译和类加载器

ruby-on-rails - 当加载根命名空间中的另一个同名类时,Rails 类加载会跳过命名空间类

java - Eclipse 和 postgres JDBC 连接

java - 使用上下文菜单捕获 HWND

Java 文件在 eclipse 中运行,但在命令行上运行