加载课程

时间:2011-01-03 17:15:11

标签: java eclipse classpath classloader classname

我正在使用Tomcat运行Eclipse Java-EE,我正在试图弄清楚如何加载一个类,但到目前为止还没有运气。因为我正在运行Tomcat,所以将根据Tomcat的目录加载类,它将java文件夹编译为类文件?

一个例子是:

  ClassLoader myClassLoader = DataType.class.getClassLoader();  

     DataType load(String classname)
     {        
      try{
       String class1name = classname;
          Class myClass = myClassLoader.loadClass(class1name);
                Constructor maker =   myClass.getConstructor();     
                DataType datatype = (DataType) maker.newInstance();           
          return datatype;
      } catch(Exception ex)
      {
       return null;
      }
     }

我传递的是一个简单的名称,说“classname”我是否需要指定更多文件的名称?

2 个答案:

答案 0 :(得分:1)

  1. 完整的类名由包和类名组成,例如“java.lang.String”。

  2. 打印您捕获的异常几乎总是一个好主意。否则,当出现问题时,您将不知道原因。

  3. 变量class1name是多余的。您可以loadClass(classname)

  4. 像Tomcat这样的servlet容器中的类加载比常规应用程序稍微复杂一些。有根类加载器,每个应用程序都有一个单独的加载器(其根加载器作为其父加载器)。大多数情况下,您不需要知道任何这些,但是当您从类路径加载资源或动态加载类时,它变得非常重要。这将我们带到最重要的问题:

  5. 为什么你甚至使用动态类加载?可能有一个很好的理由,但是从提供的代码中看不清楚。

答案 1 :(得分:0)

您是否尝试过myClassLoader.loadClass(class1Name, true) see here

我想知道你是否可以这样做:

  Class myClass = Class1Name.class;

显然,您必须导入该类。如果您不想动态加载类,建议只是一个建议。