如何动态实例化引用其他类的类

时间:2014-06-30 02:15:52

标签: java instantiation

我写了一个classLoader。通过使用它,我动态地实例化一个类。但是如果类引用其他类,我会收到错误,说找不到符号,尽管我已经在类路径中包含了这些其他类。我可以解决这个问题。

这是我的代码:

public static void main(String[] args) {
        String className = "classLoader.SayHello";
        String Dir = "D:\\temp\\";
        KonaClassLoader kcl = new KonaClassLoader();
        Class<?> clazz = null;
        Object obj = null;
        Method m = null;
        try {           
            clazz = kcl.loadClassFromLocal(Dir,className);          

            obj = clazz.newInstance();
            m = clazz.getMethod("sayGoodbye", String.class);

            m.invoke(obj, "Robin");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

问题是,如果我在SayHello类中定义任何其他对象,我会收到错误,说“找不到符号”。我已经在类路径中包含了这些其他类。

1 个答案:

答案 0 :(得分:0)

  1. 编译SayHello时,类路径应该包含Say Hello Class中包含的类的库。

  2. 当我们执行KonaClassLoader时,会尝试加载SayHello,然后加载包含的类。

  3. 无需编写loadclassfromfile方法,我们可以使用现有方法loadClass,只需在Java类路径中提及库。我执行了相同的操作并成功完成了。

    D:\ Kepler Projects \ FirstStep \ target \ classes \ com \ firststep \ classloader&gt; java -cp“ D:\ Kepler Projects \ FirstStep \ target \ classes; D:\ Temp“com.firststep.classloader.C lient 说再见罗宾