5

編集:投稿の下部にある私の解決策。

Eclipseで同じXML/XSDデータを共有する2つのプロジェクトがあります。私は、データを別のプロジェクトに分割し、代わりにさまざまな方法でそれを参照するために、さまざまなことを試みましたが、あまり運がありませんでした。私の目標は、プロジェクトごとに個別にEclipseで実行をクリックして、両方が同じデータからロードできるようにすることです。

プロジェクトが最終的にビルドされると、3つのjar(2つのプロジェクト+ lib)が作成され、xmlフォルダーとxsdフォルダーと同じディレクトリに配置されます。したがって、XSD / XMLへのファイル参照は、現在次のような形式になっています。

File file = new File("xml/pixtilemaps.xml");

これはEclipseでは機能しませんが、ファイル構造が適切であるため、エクスポート中には機能します。各プロジェクトで仮想フォルダーを使用してみましたが、相対ファイルへのランタイム参照が期待どおりに仮想フォルダーを使用しているようには見えません。それぞれをリンクされたリソースとして追加したり、ビルドパスにプロジェクトを追加したりしようとしましたが、何をしても、xmlフォルダーが相対フォルダーとして扱われないようです。次のようなエラーが発生します:file:/ F:/workspace/com.myoid.editor/xsd/pixtilemaps.xsdが存在しません。それはプロジェクトに関連してかかるからです。また、これに対する実行構成ソリューションを見つけようとしましたが、これを希望どおりに機能させるために、明らかに理解していないことがあります。

要約すると、3番目のEclipseプロジェクトにxsdフォルダー、xmlフォルダーがあり、1と2が次のような相対ファイルパスを介してアクセスできるようにします。

File file = new File("xml/pixtilemaps.xml");

修正方法:

わかりました..そう..もっと良い解決策があるかもしれませんが、これが私が思いついたものです... Eclipseの実行構成では、起動の実行元となる作業ディレクトリを指定できます。そのため、両方のプロジェクトのすべてのxml/xsdを同じ「作業ディレクトリ」に配置しました。各プロジェクトの実行構成で、作業ディレクトリを3番目のプロジェクトにポイントすると、ビオラは期待どおりに機能します。

4

2 に答える 2

1

最初の 2 つのプロジェクトのビルド パスに 3 番目のプロジェクトを として追加しproject referenceます。

以下のように、最初の 2 つのプロジェクトの代わりにClassLoader.getResourceAsStreamを使用Fileします。

    this.getClass().getClassLoader().getResourceAsStream("/xml/pixtilemaps.xml");
于 2012-10-14T19:59:03.337 に答える
1

プロジェクト メニュー -> プロパティ -> Java ビルド パス -> プロジェクトの追加で、プロジェクト 1 と 2 でプロジェクト 3 を参照しようとしましたか?

于 2012-10-14T20:05:16.690 に答える