当前位置: 首页 > 知识库问答 >
问题:

反射java.lang.ClassNotFoundException

白文彬
2023-03-14

我正在使用以下内容:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode){
        case EDIT_ADJUSTMENT:
            if(resultCode == RESULT_OK){
                try{
                    String adjustment = data.getStringExtra("adjustment");
                    adjustment = adjustment.replace(" ", "");
                    ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
                    String classNameToBeLoaded = "com.picpic.adjustments." + adjustment;
                    Class adjust = myClassLoader.loadClass(classNameToBeLoaded);
                }catch(Exception e){
                    String msg = e.getMessage();
                }
            }
        break;
    }
}

当它到达class adjust=myClassLoader.loadClass(classNameToBeLoaded);时,我得到以下异常:java.lang.ClassNotFoundException:com.picpic.adjustments.colorcrect

colorcorrect的包是com.picpic.advitions

那么,为什么会抛出那个错误呢?如果你需要更多的信息,请让我知道。谢了!

共有1个答案

胡博艺
2023-03-14

我猜这是因为您的类对您试图加载该类的类加载器是不可见的。

我建议您尝试this.getClass().getClassLoader()而不是classLoader.getSystemClassLoader()

Java有一个类加载器层次结构。每个类加载器都有不同的类路径来加载类。由于您试图加载的类似乎是用户定义的类,因此ClassLoader.getSystemClassLoader()方法返回的类加载器可能不可见它。(您可以尝试在谷歌上搜索Java ClassLoader层次结构。如果您以前不知道这个链接,可能这个链接很有用。)。

 类似资料:
  • 主要内容:反射的用途,查看元数据反射(Reflection)是指程序可以访问、检测和修改它本身状态或行为的一种能力,反射中提供了用来描述程序集、模块和类型的对象,可以使用反射动态地创建类型的实例,并将类型绑定到现有对象,或者从现有对象中获取类型,然后调用其方法或访问其字段和属性。 如果代码中使用了特性,也可以利用反射来访问它们。 反射的用途 C# 中反射具有以下用途: 在运行时查看视图属性信息; 检查装配中的各种类型并实例化这些

  • Reflection对象用于在运行时获取类型信息。 提供对正在运行的程序的元数据的访问的类位于System.Reflection命名空间中。 System.Reflection命名空间包含的类允许您获取有关应用程序的信息,并动态地向应用程序添加类型,值和对象。 反射的应用 反射有以下应用 - 它允许在运行时查看属性信息。 它允许检查程序集中的各种类型并实例化这些类型。 它允许后期绑定到方法和属性

  • 本小节我们来学习一个 Java 语言中较为深入的概念 —— 反射(reflection),很多小伙伴即便参与了工作,可能也极少用到 Java 反射机制,但是如果你想要开发一个 web 框架,反射是不可或缺的知识点。本小节我们将了解到 什么是反射,反射的使用场景,不得不提的 Class 类,如何通过反射访问类内部的字段、方法以及构造方法等知识点。 1. 什么是反射 Java 的反射(reflecti

  • 公共技术点之 Java 反射 Reflection 原文链接:Android 开源项目源码解析 1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用

  • Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 反射概述 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造

  • 问题内容: 如何通过不允许执行反射安全,,对象调用?SecurityPolicy文件还是其他? 通常,对于独立Java应用程序,没有注册。 我用这个 这种方法适用于调用方法。 我想强制执行整个jar或使用该jar的客户端代码,不允许调用 有更好的方法吗? 谢谢。 问题答案: 嗯,它 确实 适用于setAccessible。看到: 和 结果是 它可能对你没有工作的原因之一是,根据评论这篇文章并没有在