UNIXシステムにマウントされたウィンドウフォルダにファイルを書き込もうとすると、投稿のタイトルエラーが発生します。私はLinux OS上でTomcat 6の中で動作し、Windowsネットワークフォルダに書き込む必要のあるWebサービスを開発しました。システム管理者は、Linuxサーバーにファイルシステムをマウントしており、ファイルの作成と変更に問題はありません。 私は投稿のコードを実行しようとすると、私は次の例外を取得:java.io.IOException:ネットワークフォルダのアクセスが拒否されました
許可が にjava.io.IOExceptionを拒否:アクセス許可がjava.io.Fileのでjava.io.UnixFileSystem.createFileExclusively(ネイティブメソッド) で を否定.createNewFile(File.java:850)
奇妙なことは、ネットワークフォルダー上のFile.createNewFileメソッドに関連しているようですが、実際にはサービスはローカルファイルシステム上でデバッグ時にも問題なく書き込むことができます(私はPCのサービスを開発するために使用する)とTomcatのフォルダシステム管理者は、Linuxサーバー上で私を提供しています。ファイルは作成されますが空ですが、createメソッドに続くログエントリは出力されません。さらに、ファイルを作成して書き込むためにプレーンな出力ストリームを使用しても問題はありません。
ウェブ上で例外に関する説明が見つかりません。私はJavaにはあまり経験がないので、なぜこのエラーが出るのか理解したいと思います。私は間違った方法でそれを使用していますか?それは図書館のバグですか?私はいくつかのパラメータを渡すことができませんか? 前述のように、私はプレーンな出力ストリームを使ってこの問題を解決しました。これはJavaの理解を向上させるための質問です。
FileOutputStream fos = null;
try{
log.info(String.format("file length: %s",streamAttach.length));
log.info(String.format("check File : %s",filename));
File f = new File(filename);
if(f.exists())
...
boolean done= f.createNewFile();//here comes the exception
//nothing of the following happens
if(!done)
throw new NWSException("error creating file");
log.info(String.format("file %s creato", nomeFile));
はどんな答え
は、Linuxボックスで許可の問題のように聞こえます。あなたはchmodを試しましたか? – dimitrisli
システム管理者によると、権限はOKです。彼はマウントされたフォルダにファイルを作成し、viで修正することができます。私が理解できないのは、fileoutputstreamの動作中にFileクラスメソッドが失敗し、マウントされたファイルに失敗したときに "locals folder"で動作する理由です。 –