3

使いやすいように2つの*.db4oデータファイルを必要とするコードをラップしようとしています。ファイルを${project_dir}/ res /に配置し、次の行を追加して、データファイルをeclipse.classpathに追加しました。

<classpathentry kind="src" path="res"/>

私の.classpathに。

次に、引数をとらずに* .db4oファイルへのパスを見つけるラッパークラスのデフォルトコンストラクターを定義しました(パスは、セットアップに使用しているコンパイル済みコードに必要です)。パスを取得するための私のアプローチは次のとおりです。

String datapath = ClassLoader.getSystemResource("resource_name").getPath();

これは、Eclipseでコードをデバッグ/実行するときにうまく機能します。ただし、jarとしてエクスポートすると、*。db4oファイルとコンパイル済みコードがjar内にあることがわかりますが、「datapath」に返されるパスは次の形式です。

datapath = ${pwd}/file:${absolute_path_to_jar}!/{resource_name}

絶対パスが機能するのを妨げる、jar内のリソースについて何かありますか?また、コードとリソースがjarファイルに存在するという理由だけで動作が異なるのはなぜですか?最後の注意点は、私のアプリケーションは(PIG、Pythonなどのコードから)より幅広い使用を目的としていますが、「datapath」に割り当てられた奇数値を取得しているMatlabからテストしていることです。

ご回答ありがとうございます。

4

1 に答える 1

0

getSystemResource()は、URLをリソースに返します。リソースがjarファイルに圧縮されている場合、URLはそのリソースを指します(「!」表記を使用)。getPath()は、URLの「パス」部分を返しますが、必ずしも実際のファイルパスであるとは限りません。URLは、ファイルだけでなく、多くのものの1つになります。

于 2013-03-10T12:04:54.327 に答える