FaqRelativePathsJa

プロジェクト間の参照が相対パスを使った参照にならないのですが?

質問: 2つのプロジェクトを作成し、一方のプロジェクトを他方のプロジェクトのクラスパスに置きます。(またはプロジェクトのクラスパスに含まれる lib ディレクトリに jar ファイルを追加しようとします。等)ところが NetBeans は、一方から他方への絶対パスを保存しようとしているようです。そのため、作成したプロジェクトを同僚に送ろうとすると、Broken References ダイヤログが表示され、手動でパスの設定を行わなくてはなりません。どうすれば解決できますか。

回答: NetBeans は、絶対パス(プライベート)あるいは相対パス(共有)のどちらかでパスを保存できます。現在の NetBeans のデフォールト動作は次の通りです。

1. (サブプロジェクトや JAR 等への) パスが、プロジェクトのディレクトリの「内部」にある場合は、それを nbproject/project.properties 内で共有するために相対パスとして保存します。例えば、

project.mylib=components/mylib

2. また、参照しているパスとプロジェクトのディレクトリが、(Versioning Manager ダイヤログでセットアップした) 同じバージョン管理の中にある場合も相対パスとして保存します。例えば、

project.mylib=../mylib

3. これら以外の場合は nbproject/private/private.properties に絶対パスとして保存します。例えば、

project.mylib=C:<br>somewhere<br>mylib

従って、プロジェクトディレクトリの外にパスを持つプロジェクトを共有したい場合には、次のいずれかの方法があります。

1. バージョン管理を使用します。 (IDE の中でセットアップします) そうするとNetBeans は、常にこれをルートとする相対パスを使用します。

2. (例えば IDE のテキストディタで)private.properties に定義されているキーと値のペアから誤った絶対パスを取り除き、それを(プロジェクトのベースディレクトリ、すなわち nbproject をサブディレクトリとして含むディレクトリからの)相対パスに修正したものをproject.propertiesに追加します。

3. もし、相対パスの位置が将来変更される可能性がある場合には、絶対パスはそのままにし、受け取った側でパスの再構成を行ってもらいます。(プロジェクトをソースの形で配布する場合は nbproject/private/ サブディレクトリは削除しておく事を推奨します。)

ノート: 現在、外部の JAR は共有の相対バスを使って参照する事ができますが、想定される場所にある関連するソースや javadoc に対しては、このような参照はできません(つまり、完全な「ライブラリ」定義を共有する事は簡単ではありません。) IDE の将来のバージョンでは、これらの「絶対」と「相対」に関連する動作は改善されるべきでしょう。そうすれば、このような FAQ の項目は不要となります。しかしながら、NetBeans チームはまだそこには到達していません。関連する RFE (改善要望書)には以下のようなものがあります。

  • #49637 - GUI to make properties/file refs shared vs. private
  • #49638 - Action on j2seproject to make everything sharable and ready for command-line usage
  • #44035 - Create sharable library descriptor
  • #50147 - Provide a way to make a copy of a project

モジュール開発者のためのテクニカルノート:初期値は CollocationQuery によりカスタマイズが可能です。


  バージョン: NetBeans 4.0, 4.1
  ノート: NetBeans 5.0 ではデフォールト動作が、利用者の期待に沿うように、すなわち IDE の間違った判断による(共有しない)絶対パスを手で修正するようなことがないように、改善される見込みです。

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo