繁体   English   中英

对象不是使用 java 反射声明类的实例

[英]object is not an instance of declaring class on using java reflection

我正在尝试使用 java 反射和 classLoader 从 URL 加载一个类。 应用部署在weblogic 12c服务器上

        File f = new File("/a/abc");
        URL url = f.toURI().toURL();
        ClassLoader classLoader =  ClassLoader.getSystemClassLoader();
        Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
        method.setAccessible(true);
        method.invoke(classLoader, url);
        Class jobClass = classLoader.loadClass("com.test.abc");

但是,我收到以下错误:

抛出异常:

java.lang.IllegalArgumentException: object is not an instance of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)

请让我知道这里可能存在什么问题,或者这不是正确的方法。

您正在对 ClassLoader 类型的类调用方法“addURL”。 类 ClassLoader 不包含成员方法“addURL”。 这就是您收到错误的原因。

相反,您应该使用 URLClassLoader 类型的对象调用 Method 的“invoke”方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM