ディレクトリのクラスパスをクラスパッケージに設定するのが苦労しています。私はコマンドライン引数としてディレクトリを取るjarファイルを実行しようとしています。プログラムは、ディレクトリを使用してフォルダ内のクラスファイルにアクセスし、リフレクションを使用してクラスのフィールドとメソッドを探索します。クラスパスを設定した後でディレクトリクラスにアクセスできません
私はその後、各クラスの名前を取得し、CLASSLISTを通過し、クラスにアクセスするClass.forName()
メソッドを使用します。
Class c = Class.forName(className);
上記の行が機能するには、クラスパスをクラスを含むディレクトリのアドレスに設定する必要があります。私は以下のようなパッケージに属していないクラスのディレクトリを使用していたときに、プログラムがうまく実行するために取得することができます
:
はしかし、次の行のために、独占は、パッケージですプログラムはテスト目的でClass.forName(className)
java -cp "Explorer.jar:/Users/john/Desktop/Programming\ Project/Monopoly/build/classes/monopoly/" explorer.ExplorerDemo /Users/john/Desktop/Programming\ Project/Monopoly/build/classes/monopoly/
を呼び出した後ClassNotFoundException
をスローし、私は `Class.forNameのを(調整しようとした)以下のようにパッケージ名が含まれるように呼び出します。
Class c = Class.forName("monopoly."+className);
ただし、これもClassNotFoundException
をスローします。
:クラスパス命令とJARについては
を参照してください? – Brosef
いいえ、新しいClassLoaderに対してプログラムで設定します。 –
私はあなたのアプローチがうまくいくと確信していますが、私はクラスパスを使ってこれを行う方法を理解したいと思います。 – Brosef