2009-07-15 10 views
20

における相対ディレクトリパスを使用:私が働いていた代わりにハードコーディングされた行のJavaクラス内の実行可能ファイルを検索するために、相対パスを使用しようとしますが、のようなものを使用していたJava

final static String directory = "../../../ggla/samples/obj/linux_x86"

失敗... Javaで相対パスを使用する正しい方法は何ですか?

+0

定義が失敗します。どのようなエラーメッセージが表示されますか?お使いのOSに正しいパス区切り文字を使用していますか(パス区切り文字にはJavaシステム変数が必要です)。 –

+0

現在のディレクトリは何ですか?そのファイルはどこにありますか? – akarnokd

答えて

35

最も可能性のある説明は、あなたはそれがあると思いどこ現在のディレクトリがないということです。あなたはどこ相対参照の開始デバッグすることの相対パスを使用する前に右を

System.out.println(new File(".").getCanonicalPath()); 

:あなたは、アプリケーションのベースパスが何であるかを見るためにはuser.dirのシステムプロパティを検査したり、このような何かを行うことができます。

+1

素晴らしい情報ありがとう! –

0

説明したような相対パスを使用することができます。これはうまくいくはずです。したがって、エラーはおそらく他の場所です。

エラーを再現するための完全なプログラムを投稿してください。しばらくお待ちください。

0

まず、Java File classで指定されている区切り記号とパス区切り記号を使用します。しかし、私が私のコメントで言ったように、私は "それが失敗する"という情報より多くの情報が必要です。

+0

私は他のプラットフォームを知りませんが、WinXP +とLinuxでは、スラッシュを使用すると動作するようです。しかし、File.separatorでは+1です。 – akarnokd

+0

私は通常私の個人的なアプリケーションでは怠け者でスラッシュを使用していますが、作業中のコードでは、ファイル内のセパレータとパスセパレータを使用してすべてを変換します。 –

0

相対パスの場合は、getRelativePathとして相対パスの先頭にJavaによって提供されるメソッドのいずれかを使用できます。 JavaのStringでは//を使用する必要があります。

2

使用System.out.println(System.getProperty( "user.dir"));現在のディレクトリがどこにあるかを確認します。その後、このアドレスからの相対パスを使用できます。

また、読み込みしようとしているファイルを更新する必要がない場合は、getResourceAsStream( "filename")を使用してクラスパスから取得してください。

カール

1

相対パスを解決するには、getCanonicalPathまたはgetCanonicalFileが必要です。

System.out.println(new File("../../../ggla/samples/obj/linux_x86") 
    .getCanonicalPath()); 
+0

素晴らしい情報ありがとう! –

関連する問題