2012-05-10 15 views
0

なぜこのJavaコードがホームディレクトリのファイルを検索するのですか?なぜ私のEclipseワークスペースにはないのですか(/ home/ユーザー/eclipse/workspace /)?Java URIクラスファイルの場所

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

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

答えて

0

のgetResource

リソースのgetResource(:ユーザーのディレクトリは "〜"

そして最後に、ルートが例えば "/"

で表されるで表される

URI uri、boolean loadOnDemand)

Returns the resource resolved by the URI. 

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

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

1

作業領域ディレクトリにファイルを探すべきではありません。現在の作業ディレクトリの親ディレクトリ内のファイル(パスは..で始まるため)を検索する必要があります。 eclipseから実行しているときの現在の作業ディレクトリは、プロジェクトのディレクトリです。

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

+0

私のプロジェクトは "/home/medy75/Eclipse/dev_workspace/cz.cvut.visualization"で、前のパス( "../models/task.cm")は "/ home/medy /"からファイルを受け取ります。 。だから私はそれを取得しません... – medy75

+0

@ medy75:これはRCP /プラグインアプリケーションですか?その場合、一時的なワークスペースはどこに作成されましたか(rcp_workspaceなど)? – home

+0

はい、それはEclipseプラグインでなければなりません。一時的なワークスペースについて私はまったく考えていません... – medy75

0

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

ホームは、現在の作業ディレクトリがの値で表され、「//ホーム」

で表現されるだろう「」

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. 
+0

はい、私は知っていますが、このコードはそれを尊重していません。 "home/medy75/models"は "/home/medy75/Eclipse/dev_workspace/cz.cvut ..."の上にありません。 – medy75

関連する問題