私は自分のアプリケーションにプラグインシステムを構築できるかどうかを調べるためにjavaを試しています。 プラグインが遵守したいルールの1つは、インターフェイスCake
を実装する必要があるということです。 私のディレクトリは次のとおりです。javacにclassfileからクラス/インタフェース依存関係を読み込ませるように指示します。
Projectfolder
bin
Foo.class
Cake.class
src
Foo.java
Bar.java
Cake.java
Cake.java
とFoo.java
がパッケージtest.package
とBar.java
であるplugin.stuff
パッケージ(私はこれをコントロールしていないので、それはもちろん、何でもかまいません)を言うことができますにされます。 Foo.java
およびCake.java
は、問題なくJBC(JavaByteCode)にコンパイルされます。
プラグインの作成に関心のある人にはアプリケーションコードを送付したくないので、Cake
(これはBar.java
に実装されています)に関する情報を.classファイルから読みたいと思っています。これは可能ですか? javacに依存関係を持たせるために必要なjavacコマンドCake
Cake.class
?
は私がから行くことができるようにしたい明確にする:
Foo.class
Cake.class
Bar.java
に:
Foo.class
Cake.class
Bar.class
ここで何をしようとしているのかはっきりしません。プラグインは 'Cake'を実装しなければならないと言ってきました。彼らがそれをするには、最小限の 'Cake'インタフェース(通常はjarファイルにまとめられた' Cake.class')を持たなければなりません。それにかかわらず、あなたの*コードはクラスファイルから明示的に 'Cake'を動的に読み込む必要はありません(' java'ツールに組み込まれているようなプログラムを実行するために使われたクラスローダーがこれを行います)。なぜあなたはそれが必要と思いますか? –
.classファイルをjarファイルにラップして、そのクラスファイルのクラスまたはインタフェースを使用して.javaクラスをコンパイルすることはできますか? .classファイルを直接提供することはできませんか? – Payerl
いいえ、それを瓶に入れる必要はありません。そのため、私は「典型的に」と言いました。 '.class'ファイルがすべて必要です。 –