Eclipse内で宿題のZIPアーカイブを作成する私の最初の学期のプログラミングの学生にいくつかのコードを配布します。代入Nについては、クラスfw.Submit.zip()を呼び出すhwN.Submitterクラスのmainメソッドを作成します。私はメインとライブラリを実行可能なJARに配布します。 fooはかなり安定していますが、ときどき変化します。図書館は各宿題のJARファイルにバンドルされています。クラスパスの先にあるJARからのスーパークラスのクラス
生徒がhw1のJARをEclipseのビルドパスに追加したとします。私はhw2のためのfoo.SubmitのAPIを変更し、そのJARを配布します。後でBuild Pathに追加されるので、hw2.Submitterはhw1のJARからfoo.Submitのロードを終了します。これは、APIが変更されてからメソッドを含んでいません。
私はいくつかの選択肢があるようです:A)古いJARを削除するように学生に教えてください。B)学生にビルドパスを並べ替えるか、C)自分のクラスローダを書くよう教えてください。私は古い宿題でJARを動かすのが便利なので、Aが気に入らない。私は最初の学期のプログラマーなので、Bが気に入らない。そして私はCを働かせることができません。
私はURLClassLoaderで遊んだことがありますが、親クラスローダーは古いJARのクラスを最初に見つけます。これらの古いJARに代わる方法、または親クラスローダをオーバーライドする方法はありますか?
zipファイルを送信するコードを提供することは本当に必要ですか?彼らはプログラミングクラスに入っています。彼らは、zipファイルを作成し、それをサーバーのどこかに置くことができるはずです(またはコースWebページを通してアップロードする)。 –
私はあなたが最初の学期の部分を逃したと思います。私は確かにこれをするように頼むことができますが、ファイルを省略したり、ディレクトリを含めたり、rarまたは7zipなどします。 – kaerimasu
このような競合を解決する従来の方法(醜い規則ですが、とにかく...)は、ライブラリクラスのパッケージを変更することです。 – CurtainDog