0

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

一个例子是:

  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;
      }
     }

我传递的是一个简单的名称,比如“类名”,我需要指定更多而不是文件名吗?

4

2 回答 2

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

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

  3. 变量class1name是多余的。你可以这样做loadClass(classname)

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

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

于 2011-01-03T17:41:14.577 回答
0

你试过myClassLoader.loadClass(class1Name, true) 看到这里吗?

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

  Class myClass = Class1Name.class;

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

于 2011-01-03T17:25:51.343 回答