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 のようなサーブレット コンテナでのクラスのロードは、通常のアプリケーションよりも少し複雑です。ルート クラス ローダーと、アプリケーションごとに個別のローダー (ルート ローダーを親として持つ) があります。ほとんどの場合、これについて知る必要はありませんが、クラスパスからリソースをロードしたり、クラスを動的にロードしたりする場合に重要になります。これにより、最も重要な質問が得られます。

  5. なぜ動的クラスローディングを使用しているのですか? 正当な理由があるかもしれませんが、提供されたコードからは明らかではありません。

于 2011-01-03T17:41:14.577 に答える
0

myClassLoader.loadClass(class1Name, true) こちらをご覧になりましたか?

単純にこれを行うことができるかどうか疑問に思っていました:

  Class myClass = Class1Name.class;

明らかに、クラスをインポートする必要があります。クラスを動的にロードしたくない場合の提案です。

于 2011-01-03T17:25:51.343 に答える