5

jarファイルからクラスをロードして、そこからオブジェクトを作成することは可能ですか?

注:jarファイルは、プログラムのコンパイル時には存在しませんが、後でユーザーによって追加され、ユーザーがプログラムを開始したときにロードされます。

私のコードは次のようになります。ユーザーには、コンパイルされたJavaクラスしか含まれていないjarファイルがあります。次に、ユーザーはこのjarファイルをディレクトリに配置し、ディレクトリを調べてこのjarファイルを見つけるプログラムを起動します。次に、このjarファイルをロードしてクラスを作成し、そこからオブジェクトを作成して配列に追加します。

jarファイル(java.ioファイルとしてロードされた)からクラスを作成し、そのクラスからオブジェクトを作成することを除いて、すべてがダウンしています。

何か助けはありますか?ありがとう。

4

2 に答える 2

4

メソッドを探していClass#forNameますClass#newInstance

このリンクは、その名前を知っているクラスを初期化することに関する良い例を提供します (リンクから抽出):

Class c = Class.forName("com.xyzws.AClass");
AClass a = (AClass)c.newInstance();

これらの状況の良い例は、接続するdbエンジンドライバーのオブジェクトを初期化するため、JDBCを使用することです(リンクも指摘しています)。このドライバーは、プロジェクトにインポートされた jar から取得されることに注意してください。MySQL、Oracle、または MSSQL Server への jar である可能性があります。ドライバー クラス名を指定するだけで、JDBC API と jar が SQL を処理します。

Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

また、jar を動的にロードするこの特定の問題については、質問と回答があります。

于 2012-07-16T06:01:31.237 に答える
0

もっと簡単?方法は、ユーザーがjarファイルをクラスパスに入れることです。
そうすれば、コードはjvmによってロードされるクラスにアクセスできます

編集:@Luiggiの答えでさえ、jarがクラスパスにあると想定しています

于 2012-07-16T06:03:11.720 に答える