同様の問題が頻繁に尋ねられることは承知しています。しかし、解決策は私からは機能しません。jcifs.jar (バージョン 1.3.17) を試しました。ここで、非常に遅く、何らかの理由でハングアップすることがあることがわかりました。私は十分に必死なので、非常に遅い(そして信頼できない祈り)に対処できました。しかし今、ネットワークドライブにあるコンテンツを圧縮する必要があるという問題もあります。これは jcifs では機能しないか、方法がわかりません。私の最適な解決策は、コピーを実行する.batを呼び出すことです(ドライブが見つからないため、これは機能しません)。そして、7za.exe を呼び出して圧縮します (ドライブが見つかりません)。コード例:
public static int SevenZip(String source, String dest, ServletContext context) throws IOException, InterruptedException
{
String zipFile = "\"" + context.getRealPath("") + "\\WEB-INF\\7za.exe\"";
String zipInstruction = zipFile + " a " + dest + " " + source;
Logger.getAnonymousLogger().info(zipInstruction);
Process process = Runtime.getRuntime().exec(zipInstruction);
StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream(), "ERR");
StreamGobbler outputGobbler = new StreamGobbler(process.getInputStream(), "OUT");
errorGobbler.start();
outputGobbler.start();
return process.waitFor();
}
サーブレットとして実行されていない場合、コードは機能します。StreamGobbler を無視すると、プロセスからエラーと出力ストリームが取得されます。tomcat を Windows 認証に設定できることをどこかで読みましたが、場所と方法がわかりません。これは私を助けますか?そしてどうやって?