- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我之前的问题中,我询问了如何加载远程 jar 文件。我当前的代码是这样的:
//f is the path to the jar
URLClassLoader loader = new URLClassLoader(new URL[]{f.toURI().toURL()});
Class<?> jarClass = Class.forName(main, true, loader);
Class<? extends Module> module = jarClass.asSubclass(Module.class);
Constructor<? extends Module> constructor = module.getConstructor();
System.out.println(constructor);
Module module = constructor.newInstance();
这很好用,但是远程加载的模块扩展了加载它们的 jar 中的一个类,这给出了这个错误:
Caused by: java.lang.ClassNotFoundException: package.whatever.Module,我认为这是因为它使用的是 URLClassLoader 而不是 getClass().getClassLoader().. 我怎样才能让它使用 URLClassLoader 然后回退到默认的?
谢谢,
巴特
最佳答案
您可以将您的应用程序类加载器设置为 url 类加载器的父类:
URLClassLoader loader = new URLClassLoader(
new URL[]{f.toURI().toURL()}, Module.class.getClassLoader());
来自Oracle Java tutorial (类加载机制):
The Java platform uses a delegation model for loading classes. The basic idea is that every class loader has a "parent" class loader. When loading a class, a class loader first "delegates" the search for the class to its parent class loader before attempting to find the class itself.
关于java - URLClassloader 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405388/
我想使用 URLClassLoader 从 jar 存档中加载特定目录中的类。 项目结构如下 / application.jar /lib/ mysql.jar log4j.jar .
我在一个目录中有多个来自不同包的已编译 Java 类文件,如下所示。 C:/classes/package/A.class C:/classes/package/B.class C:/classes/
我正在使用 URLClassLoader 从外部 jar 文件加载类,由此加载的类可能已经存在于我的 Web 应用程序类加载器中,假设 URL 类加载器已加载版本 1 的类 A 和 Web 应用程序使
我想在目录 F:/badge-dao/bin/com/badge/dao/impl/ 中加载一个名为 BadgeDaoImpl 的文件。我正在编写和测试以下代码。 如果我更改目录或类名,它会抛出异常。
我编写了一个程序来管理以 jar 形式提供的插件。 我使用 URLClassLoader 加载插件类,它按预期工作。我添加了一些存储在插件 jar 中的资源(XML 文件)。 如果我调用不使用资源的方
在我之前的问题中,我询问了如何加载远程 jar 文件。我当前的代码是这样的: //f is the path to the jar URLClassLoader loader = new URLCla
我有一个非常奇怪的问题。 我正在使用 URLClassLoader 从目录中动态导入文件。如果我使用文字字符串,代码可以正常工作,如果我将变量用于文字字符串,代码也可以正常工作,但这不是我需要的。 p
我有相当简单的场景: 我的应用程序具有包含我的应用程序逻辑的核心 jar 文件。这个核心 jar 应该在运行时动态监视文件夹,当插件 jar 被放到那里时,它应该加载它并准备好使用它。可能有很多插件j
所以我正在制作一个服务器,很像 IRC,只是为了了解更多信息,这就是我的问题。 我有每个人都可以根据自己的权限调用的命令,并且每个“命令”都有自己的类,所有类都位于一个目录中。我将所有类加载到 Has
我在互联网上浏览了很多 URLClassLoader 内存泄漏解决方案,但我还没有找到任何完全工作的代码和精确的解决方案。我找到的最接近的解决方案是 this 任何功能齐全的代码或链接,它使用 Wea
我有一个相当复杂的 Java 软件,它必须动态加载一个类、创建一个对象并调用其方法之一。事实证明,在某些情况下,如果加载的类引用了另一个类,则会引发 NoClassDefFoundError(由 Cl
这是我的代码: File folder = /* the folder with a.txt file */ final URL[] urls = new URL[] { folder.toURI
在开发一个 ant 任务以使用注释为项目自动生成一些 gui 代码时,因为我更喜欢声明性方法,所以我使用 java.net.URLClassLoader动态添加类到我的类路径。 当扫描类的类级别注释时
我正在尝试编写一段在运行时动态加载类的代码 public class URLDynClassLoader { public URLDynClassLoader(){ try{
我有一个 java 项目,它使用 URLClassLoader 在运行时从另一个 jar 文件加载类,就像插件系统一样。让我给你一个简化版本的问题:假设在我的 main 方法中,我将创建 ClassL
所以我知道如何使用 URLClassLoader,并且我知道它的作用,我想知道它到底是如何做到的。 基本上我在问:这是直播吗?或者它会临时下载并在本地读取类吗? 因此,如果您不断地从使用 URLCla
我有以下代码片段 URL url = new File("c:/work/projects/jars/").toURI().toURL(); URL[] urls = new URL[]{url};
在哪种情况下,可以使用 URLClassLoader 从指定路径中的特定 jar 加载类? 例如。 URL url = new URL("file:///path/to/customClasses.j
假设我正在创建一些加载外部目录中所有 jar 的东西,以动态向应用程序添加可选功能。 我迭代该目录中的所有 jar 并确认它们是 jar 并将它们作为 URL 加载到 URLCLassLoader 中
我正在尝试编写一个可以从命令行传递任意文件的 Java 1.7 应用程序。该文件将被添加到类加载器中,以便可以将其用作资源。 将文件添加到 URLClassLoader 似乎可行,但是添加到 Clas
我是一名优秀的程序员,十分优秀!