2017-08-30 6 views
-1

私は自分のアプリケーションにプラグインシステムを構築できるかどうかを調べるためにjavaを試しています。 プラグインが遵守したいルールの1つは、インターフェイスCakeを実装する必要があるということです。 私のディレクトリは次のとおりです。javacにclassfileからクラス/インタフェース依存関係を読み込ませるように指示します。

Projectfolder 
    bin 
     Foo.class 
     Cake.class 
    src 
     Foo.java 
     Bar.java 
     Cake.java 

Cake.javaFoo.javaがパッケージtest.packageBar.javaであるplugin.stuffパッケージ(私はこれをコントロールしていないので、それはもちろん、何でもかまいません)を言うことができますにされます。 Foo.javaおよびCake.javaは、問題なくJBC(JavaByteCode)にコンパイルされます。

プラグインの作成に関心のある人にはアプリケーションコードを送付したくないので、Cake(これはBar.javaに実装されています)に関する情報を.classファイルから読みたいと思っています。これは可能ですか? javacに依存関係を持たせるために必要なjavacコマンドCakeCake.class

は私がから行くことができるようにしたい明確にする:

Foo.class 
Cake.class 
Bar.java 

に:

Foo.class 
Cake.class 
Bar.class 
+0

ここで何をしようとしているのかはっきりしません。プラグインは 'Cake'を実装しなければならないと言ってきました。彼らがそれをするには、最小限の 'Cake'インタフェース(通常はjarファイルにまとめられた' Cake.class')を持たなければなりません。それにかかわらず、あなたの*コードはクラスファイルから明示的に 'Cake'を動的に読み込む必要はありません(' java'ツールに組み込まれているようなプログラムを実行するために使われたクラスローダーがこれを行います)。なぜあなたはそれが必要と思いますか? –

+0

.classファイルをjarファイルにラップして、そのクラスファイルのクラスまたはインタフェースを使用して.javaクラスをコンパイルすることはできますか? .classファイルを直接提供することはできませんか? – Payerl

+0

いいえ、それを瓶に入れる必要はありません。そのため、私は「典型的に」と言いました。 '.class'ファイルがすべて必要です。 –

答えて

0

オーケー、私はエラーを発見したか、少なくとも私が働いてそれを得ました。 ファイルFoo.classCake.classはフォルダsrc/test/package/に配置されていないため、クラス/インターフェイスが見つかりませんでした。私はこの階層に作成

Projectfolder 
    bin 
     test 
     package 
      Foo.class 
      Cake.class 
    src 
     Bar.java 

とbinフォルダには、コマンドjavac ..\src\Bar.javaを実行したコマンドは、細かい走ったとBar.classファイルは、次のBar.javaファイルへsrcフォルダに生成されました。

関連する問題