【问题标题】:Java: Load external classesJava:加载外部类
【发布时间】:2011-12-02 15:19:36
【问题描述】:

如何加载外部类文件? 我找到了一个如下的例子,但是它不起作用。

       //string containing full path of external class file
       String class1 = "...\\Example.class"
       Class loadClass = Class.forName(class1);
       loadClass.main(args);

任何想法如何加载? 在同一个项目中加载类的正常情况很容易:

           Example.main(args)

如何为外部类做到这一点?

【问题讨论】:

    标签: java class load external


    【解决方案1】:

    Class.forName() 采用完全限定的类名而不是路径作为参数。示例“com.example.MyApp”http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#forName(java.lang.String) 请改为设置类路径。

    编辑:或者如果您需要在运行时根据参数动态加载类,请考虑使用自定义类加载器。 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ClassLoader.html

    【讨论】:

      【解决方案2】:

      您的 .class 文件必须位于正确位置的类路径中。

      这意味着如果该 .class 文件具有 package p1.p2 的包声明,则必须将其放置在类路径中,即路径 /p1/p2/Whatever.class。如果您的 .class 文件位于(正确构建的).jar 文件中,那么他已经在 .jar 内的良好文件夹结构中,您只需将 .jar 放在类路径的根目录中。

      另外,从你的调用中删除 .class,参数应该是这样的:

      Class<?> clazz = Class.forName("java.lang.String");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 2021-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多