0

このJavaコードがホームディレクトリでファイルを探すのはなぜですか?Eclipseワークスペース(/ home / user / eclipse / worksheet /)にないのはなぜですか?

import org.eclipse.emf.common.util.URI;

URI uri = null;
try {
    uri = URI.createURI("../models/task.cm");
    Resource resource = resourceSet.getResource(uri, true);
...
4

3 に答える 3

1

ワークスペースディレクトリでファイルを検索しないでください。..現在の作業ディレクトリの親(パスがで始まるため)でファイルを検索する必要が あります。eclipseから実行しているときの現在の作業ディレクトリは、プロジェクトのディレクトリです。

あなたのプロジェクトはあなたのホームディレクトリの下にあると思うので、これが理由です。

于 2012-05-10T15:16:37.933 に答える
0

実はそうです。Unixベースのシェルでは、「..」は現在動作しているディレクトリの上のディレクトリを表します。つまり、実際にはEclipseプログラムを囲むフォルダー、または実行中のものを探しています。

ホームは「//home」で表されます

現在の作業ディレクトリは「。」の値で表されます。

ユーザーのディレクトリは「〜」で表されます

そして最後に、ルートは「/」で表されます

例えば:

Macintosh-2:/ Administration$ cd ~ #!sends me from root to my user directory
Macintosh-2:~ Administration$ cd ../Administration #!sends me from my user directory, to the directory above it, then back down 
Macintosh-2:~ Administration$ cd Administration #!user directory doesn't exist inside my user directory, thus showing ".." represents the directory above the current working one.
-bash: cd: Administration: No such file or directory
Macintosh-2:~ Administration$ cd .. #!moves up a directory
Macintosh-2:Users Administration$ #!now working in surrounding directory.
于 2012-05-10T15:19:18.973 に答える
0

getResource

リソースgetResource(URI uri、boolean loadOnDemand)

Returns the resource resolved by the URI.

リソースセットは、指定されたURIをリソースに解決するために、次の戦略を実装することが期待されています。まず、URIコンバーターを使用してURIを正規化し、次に各リソースの正規化されたURIと比較します。一致するものが見つかった場合、そのリソースが結果になります。それができない場合は、URIを他の場所で解決できるように委任します。たとえば、パッケージレジストリは、パッケージの名前空間URIをそのパッケージの静的インスタンスに解決するために使用されます。したがって、重要な点は、任意の実装がURIを任意のリソースに解決する可能性があることです。必ずしも、この特定のリソースセットに含まれるリソースに解決する必要はありません。委任ステップが結果を提供できず、loadOnDemandがtrueの場合、リソースが作成され、そのリソースが結果になります。

Parameters:
    uri - the URI to resolve.
    loadOnDemand - whether to create and load the resource, if it doesn't 
    already exists. 
Returns:
    the resource resolved by the URI, or null if there isn't one and it's not 
    being demand loaded. 
Throws:
    java.lang.RuntimeException - if a resource can't be demand created. 
    WrappedException - if a problem occurs during demand load.

そのため、リソースが見つからず、ホームディレクトリに任意のリソースが作成されます。

于 2012-05-10T15:20:03.457 に答える