2016-09-08 16 views
0

私は2つのクラスがあります:MainClazJavaのクラスパスに追加された新しいJarから自動的にクラスを読み込む方法は?

  1. MainClaz
  2. MyTest2

public class MainClaz { 

    public static void main(String[] args) throws InterruptedException { 
     while (true) { 
      try { 

       Class aClass = Class.forName("com.test.MyTest2"); 
       Object t = aClass.newInstance(); 
      } catch (Exception e) { 
       System.out.println("Exception For MyTest2 "); 
      } 
      Thread.sleep(10000); 
      try { 
       Class aClass = Class.forName("com.test.MyTest3"); 
       Object t = aClass.newInstance(); 
      } catch (Exception e) { 
       System.out.println("Exception For MyTest3 "); 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

私は瓶(ジャー1)の両方のクラスをパッケージ化し、それを入れているがクラスパス

MyTest3はこれには存在しないため、ClassNotFoundExceptionを投げつけ続けます。

今言うことができます...クラスMyTest3を含む新しいjar(Jar 2)を作成し、このjarをクラスパスFolderにコピーします。

私はクラス内の別の新しい瓶にMyTest3クラスを入れているので、それをクラスパスにMyTest3を見つける必要がありますが、それはClassNotFoundExceptionを投げている、病棟に。

これを動作させるにはどうすればよいですか?

要件に詳細を追加:今クラス名のよう

は、ハードコーディングされています。しかし、それらは外部ソースから読み込まれます(いくつかのデータベースを考えてみましょう)。しかし、クラスパスの新しいjarに新しいクラスを追加し、クラス内のクラスの完全修飾名を追加して、ループプログラムの次の反復で動的にクラスをロードできるようにしたい。 MyTest3のインポートを追加

  • をTEST2する新しいjarファイルの

  • +0

    あなたは動的で、すでにロードしたクラスローダ(デフォルトのクラスローダー)のクラスパスを変更することはできません少なくとも私は方法を知らない。デフォルトを置き換えるには、JVMを再起動する必要があります。ただし、クラスローダーの新しいインスタンスを作成し、新しいクラスローダーに新しいクラス定義をロードしてから、そのクラスローダーを使用して新しいクラスローダーを使用して、要件を詳述してください。 – SGM1

    答えて

    0
    1. 変更パッケージ名:
    import com.test2.MyTest3; 
    
    +0

    あなたは私が追加したより多くの情報を見ていただけますか?...それがrequirmentsに多くを加えることができるかどうか見てください – Sohi

    関連する問題