0

QDoxを使用して Java ソースを解析しています。このインターフェースに問題があります:

import test.Word;

public interface Spellable {
    /**
    * Checks the spell of the word in a given language
    */
    public boolean checkSpell (Word word);  
}

Word 型を解析する時点で、ファイルシステム内のパスがどこにあるかを知る必要があります。それで、それを知る方法はありますか?、おそらくクラスパスを使用していますか?

4

1 に答える 1

0

これを 100% 確実に互換性のある適切な方法で行うことは不可能だと思います。Java は実際には、クラスパス メカニズムを介して、ファイル システムからユーザーを少しだけ抽象化しようとします。

それでも、通常はクラスローダーを介してファイル パスを取得できます。最初のステップは、関心のあるリソースを見つけることができるクラスローダーへの参照を取得することです (通常、独自のクラスのクラスローダーは正常に動作します。より複雑なシナリオの場合は、どのクラスローダーを使用するかを知っておく必要があります)。 .

次に、特定のリソースの場所を URL としてクラスローダーに問い合わせることができます。次に例を示します。

final ClassLoader loader = getClass().getClassLoader();
final URL resourceLocation = loader.getResource("com/mycomp/coolapp/checkthis.doc");

運が良ければ、URL はfile:/プロトコルを使用し、ローカル ファイル システム上の場所を記述します。その場合は、このパスを抽出して、検索したばかりのクラスパス リソースのファイル システムの場所として使用できます。それがfile:/リソースでない場合、そのクラスはローカル マシン上に存在しない可能性がある (たとえば、RMI を介してリモートで読み込まれている) ため、いずれにせよ運が悪くなります。

これが複雑に聞こえる場合は、Java 起動スクリプト (例: java ... -Dworking.dir=$(pwd)) からシステム プロパティとして作業ディレクトリを渡すことができます。

于 2010-11-12T16:39:41.590 に答える