有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何实例化。我在运行时得到的类文件

我在运行时得到一个类文件,并将其保存在特定位置。如何创建此类的对象:

Class.forName(MyDynamicClass); 

这行不通。这个类没有任何包,那么如何实例化这个类呢

我刚上了MyDynamicClass。我的主文件夹中的类文件

我尝试了“Amir Afghani”answer,它抛出了ClassNotFound异常


共 (3) 个答案

  1. # 1 楼答案

    您可以尝试调试的步骤:

    1. 检查你的课程路径
      当你上课的时候。forName(“MyDynamicClass”)
      它会在类路径中检查MyDynamicClass文件。初始化并加载它

    2. 运行程序时,请使用-verbose参数
      这将帮助您确定在解决类路径问题后如何搜索和加载此类

    3. 如果不想将其添加到类路径中,则必须编写自己的类加载器(请参见java.net.URLClassLoader,它提供了一种更简单的方法)。这将允许您放置要加载的自定义路径

  2. # 2 楼答案

    我已经测试过带和不带软件包,两种情况都很好

    以下是课程

    Default Package:

    public class MyDynamicClass {
    
    }
    

    Under package com.test

    package com.test;
    
    public class MyDynamicClass {
    
    }
    
    package com.test;
    
    public class MyDynamicClassTest {
    
        public static void main(String[] args) {
            try {
                Class clazz = Class.forName("com.test.MyDynamicClass");
                Class clazz2 = Class.forName("MyDynamicClass");
    
    
                System.out.println("clazz :: "+ clazz);
                System.out.println("clazz :: "+ clazz2);
    
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
    
    Output:
    
    clazz :: class com.test.MyDynamicClass
    clazz :: class MyDynamicClass
    

    一旦有了类对象,就可以调用newInstance()来创建对象

    你的课程是怎么编的?你能确定有吗。类文件存在吗

  3. # 3 楼答案

            ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
    
             // Step 2: Define a class to be loaded.
    
            String classNameToBeLoaded = "MyDynamicClass";
    
    
             // Step 3: Load the class
    
            Class myClass = myClassLoader.loadClass(classNameToBeLoaded);
    
    
             // Step 4: create a new instance of that class
    
            Object whatInstance = myClass.newInstance();