2016-05-23 16 views
3

私は2つのプロジェクト:Test1とTest2を持っています。netbeansプロジェクトの参照の問題

this.getClass().getClassLoader().getResource("").getPath()  

結果は次のとおりです:テスト2テストプロジェクトフォルダにスクリプトを持っている

this.getClass().getClassLoader().getResource("").getPath() 

結果は次のとおりです:

Test2をコンパイル時ライブラリへのTest1を追加

/home/andy/Documents/Project/Test2/build/classes/ 

/home/andy/Documents/Project/Test1/build/classes/ 

私の質問は0です コンパイル時のライブラリにTest1を追加した後も、パスがまだ/home/andy/Documents/Project/Test2/build/classes/にならないのはなぜですか?

答えて

0

クラスローダー、より具体的には、Test2.classのロードに使用されたクラスローダーを要求しています。その後、クラスローダーにリソースを取得するように依頼します。クラスローダーのデフォルトの動作は、要求を解決できるかどうかを親クラスローダーに問い合わせることです。親クラスローダーを持たないので、あなたのjvmのブートストラップクラスローダーが使用されます。空の名前のリソースを要求すると、クラスパスの最初のエントリでこれを満たすことができます。 NetBeansがクラスパスをどのように設定するかによって、これはTest1またはTest2のいずれかになります。

確定的な結果を得たい場合は、プロジェクトに固有のいずれかのプロジェクトからリソースを指定します。

+0

私はtest2.Main.class.getClassLoader()。getResource( "")。getPath();に変更しました。 test2はパッケージ名、Mainはクラス名ですが、どのように修正できますか?結果は同じです:/ home/andy/Documents/Project/Test1/build/classes/ –

+0

誰もが知っている? NetBeans 8.1のバグに属していますか?私はプロジェクトの参照をする必要があります、それ以外の場合は、別の* .jarをインポートするために非常に問題ですので、私を助けてください、thx! –

+0

誰でも助けることができますか? –