2016-10-12 15 views
0

私はかなりの研究をしましたが、同様の問題を抱えている人は見つかりませんでした。tomcat 8.0.27とSystem.getProperty( "file.separator")

pathSeparator=System.getProperty("file.separator"); 

この機能を使用してファイルセパレータ( "/"または "\")を取得します。

theFile = new java.io.File(this.getServletContext().getRealPath(pathSeparator+"EXAMPLE"+pathSeparator+"EXAMPLE1"+pathSeparator+"EXAMPLE2"+pathSeparator + EXAMPLE3+ ".example")); 

次の文字列から上記コードべきgetRealPath:

\EXAMPLE\EXAMPLE1\EXAMPLE2\EXAMPLE3.example 

それがない、しかし、変数theFileは、コードの実行後にNULLに設定されています。 pathSeperatorを "/"に設定すると、theFileはnullではなく、正しく動作します。なぜどんなアイデア?

+0

は、それが問題の唯一のコピーエラーですかそれは本当にあることを使用している場合

PathSep ** e ** ratorとPathSep ** a ** rator? –

+0

@ piet.tはいコピーエラーです。私は手作業でそれを書いて、間違ったheheを得た。今修正されました。 – Kristjan

+0

ええ、 'theFile = new File(...)'の後に例外がスローされない限り、 'theFile'がどのようにnullになるか分かりません。 – Henry

答えて

1

ServletContext()。getRealPathのドキュメントを読んでください。

このメソッドは、パスを実パスに変換できない場合はnullを返します。

特に、Javaとサーブレットは、仮想パスの指定にパスの区切り文字として"/"を使用します。これはWindowsシステムでも当てはまります。だから、「\」は、サーブレットコンテキストで無価値であり、あなたは(のServletContextからヌルなります)を使用。getRealPathあなたは

+0

あなたのコメントをありがとうございます。最初は私もそう思った。しかし、私は別のコンピュータ上でプログラムを実行しようとしたが、問題は唯一のものだ。私はそれがtomcatサーバーのバージョンだと思っています。別のバージョンで試してみると、私の発見を投稿します。 – Kristjan

関連する問題