1

私はMacを使用していますが、初めてです。これが私の質問です:

Java に File オブジェクトとして含める必要があるフォルダーがあります。これを試すと:

File firefoxProfileFolder = new File("/Users/prime/work/dmall/selenium/src/test/resources/firefoxprofile");

それは正常に動作します。このコードは次のファイルにあります。/Users/prime/work/dmall/selenium/src/test/java/com/dmall/utils/WebUtil.java

しかし、私がこれを試すと:

File firefoxProfileFolder = new File("../../../../resources/firefoxprofile");

フォルダを読み込めません。そのため、このファイルからそのフォルダーへの相対パスは機能していないようです。それで、私は何をすべきですか?私が間違っているのは何ですか?

このコードは絶対パスがどうなるかわからないサーバーから実行されるため、相対パスを使用する必要があります。

4

4 に答える 4

3

firefoxProfileFolder.getCanonicalPath()を使用して、それがString s = new File( "/ Users / prime / work / dmall / selenium / src / test / resources / firefoxprofile")。getCanonicalPath();と同じパスであるかどうかを確認できます。
同じパスでない場合、相対パスはfalseです...

于 2013-01-28T08:22:54.713 に答える
3

相対パスを間違えた可能性が最も高いです。それはうまくいくはずです。

new File('testDir').mkdirs()これを確認するには、Java がこのディレクトリを作成する場所を参照して、新しいテスト ディレクトリを作成します。それは予想された場所にありますか、それとも別の場所にありますか?

于 2013-01-28T08:02:56.623 に答える
2

実際には、ランチャー スクリプトの現在のディレクトリを考慮して、ディレクトリ パスを使用する必要があります。つまり、ルート ディレクトリはこのスクリプトのディレクトリです。

于 2013-01-28T08:04:12.520 に答える
2

実行時にディレクトリを取得できます。

URL url = ClassLoader.getSystemResource("relative to/classpath/resources/firefoxprofile");
File file = new File(url.getFile()); // the directory
....    
于 2013-01-28T08:10:14.200 に答える