我正在使用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”我是否需要指定更多文件的名称?
答案 0 :(得分:1)
完整的类名由包和类名组成,例如“java.lang.String”。
打印您捕获的异常几乎总是一个好主意。否则,当出现问题时,您将不知道原因。
变量class1name
是多余的。您可以loadClass(classname)
。
像Tomcat这样的servlet容器中的类加载比常规应用程序稍微复杂一些。有根类加载器,每个应用程序都有一个单独的加载器(其根加载器作为其父加载器)。大多数情况下,您不需要知道任何这些,但是当您从类路径加载资源或动态加载类时,它变得非常重要。这将我们带到最重要的问题:
为什么你甚至使用动态类加载?可能有一个很好的理由,但是从提供的代码中看不清楚。
答案 1 :(得分:0)
您是否尝试过myClassLoader.loadClass(class1Name, true)
see here?
我想知道你是否可以这样做:
Class myClass = Class1Name.class;
显然,您必须导入该类。如果您不想动态加载类,建议只是一个建议。