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

ClassLoader不加载内部类

巫新知
2023-03-14

ClassLoaderCLMAIN->URLClassLoaderclA(类A,$B)。$B是类a的内部类B。

  1. 从clMain创建具有指定url的新clA到包含类A(和类$B)的jar文件。然后通过CLA创建新对象A。
  2. 从X加载的另一个类ClassLoader通过接口执行对象a的方法没有问题。
  3. 然后,在该方法中,应该创建新对象$b,但它抛出noClassDefFounderRorro.
  4. 在类A的构造函数中加载类$B可以解决以下问题:this.getClass().getClassLoader().loadClass(“A$B”);

共有1个答案

陈朗
2023-03-14

NoClassDefFoundError总是意味着找不到$inner类文件(在本例中)本身。打包或复制问题或url引用问题(?JNDI命名问题),但不管怎样,文件没有位于指定的位置。(有时文件名在某个地方是一个错别字,而它的位置是正确的)。

 类似资料:
  • 问题内容: 如果我有一个内部类声明,例如: 其次是: A $ B内部类也将被加载吗?如果B内部类未声明为“静态”怎么办? 问题答案: 一旦代码被编译, 就没有内部类之类的东西 。如果查看的结果,则会看到两个文件: 因此,类在加载时不会加载,只是 碰巧 在中定义了。 编辑 例如,鉴于这两个文件, 和一个文件(为方便起见): 首先,通过运行进行构建。然后,解压缩生成的JAR文件(位于中): 打开每个文

  • 问题内容: 这个问题困扰了我一段时间。我必须在我的Java应用程序中加载几个文件,到目前为止,我工作的唯一方式是这样的: 但这是丑陋和可怕的。有一阵子我以为我在做这个工作: 但这由于某种原因不再起作用(我必须做些更改并且没有注意到。它返回null。 我应该使用getResource()而不是getSystemResource()(如果这样),为什么getSystemResource()是静态的却不

  • 如果我有一个内部类声明,例如: 其次是: A$B内部类也会加载吗?如果B内部类没有被声明为“静态”呢?

  • 问题内容: 我有一个加载从源文件编译的类。但是,当我更改源文件,保存并重新编译它时,仍然会加载该类的第一个版本。 我想念什么?像newInstance之类的东西? 问题答案: 类加载器不能替换已经加载的类。将返回现有实例的引用。 您必须实例化一个新的类加载器,并使用它来加载新类。然后,如果要“替换”该类,则必须扔掉该类加载器并创建另一个新的类加载器。 针对您的评论:做类似的事情 该类加载器将使用“

  • 本文向大家介绍classloader类加载器_基于java类的加载方式详解,包括了classloader类加载器_基于java类的加载方式详解的使用技巧和注意事项,需要的朋友参考一下 基础概念 Classloader 类加载器,用来加载 Java 类到 Java 虚拟机中。与普通程序不同的是。Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机

  • Java中的ClassLoader是一个用于在Java中加载类文件的类。 爪哇。ClassLoader是一个抽象类 这里我的问题是这个java。类加载器类与JVM的类加载器有任何关系(1.引导类加载器2.扩展类加载器3.系统类加载器)? 或者这个java。ClassLoader是一个单独的类,可用于创建自定义ClassLoader? 类加载器是Java运行时环境的一部分,它将Java类动态加载到J