有 Java 编程相关的问题?

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

java如何从另一个没有包名的类加载器加载类?

我需要知道如何使用不同的类加载器(test.jar包含classes.dex文件)加载没有包的类:

File f = new File("/sdcard/test.jar");
final File optimizedDexOutputPath = context.getDir("outdex", 0);
DexClassLoader classLoader = new DexClassLoader(f.getAbsolutePath(), optimizedDexOutputPath.getAbsolutePath(), null, context.getClassLoader());

如果“测试”类有一个包:

package com.test;

public class Test {
    public static void test() {
        // do something
    }
}

这项工作:

Class<?> myClass = classLoader.loadClass("com.test.Test");

如果“测试”类没有包:

public class Test {
    public static void test() {
        // do something
    }
}

这不起作用:

Class<?> myClass = classLoader.loadClass("Test");

是否可以在没有包的情况下加载类


共 (1) 个答案

  1. # 1 楼答案

    加载没有包名的类没有问题。检查我的示例(类“Test”必须没有包):

    public class Test {
    
        public static void main(String[] args)  {
            try {
                Class<?> myClass = Test.class.getClassLoader().loadClass("Test");
                System.out.println(myClass);
            }
            catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
    

    您将毫无例外地获得控制台输出:

    课堂测试