PDFで共有レビュー機能を有効にするJavaプログラムを作成しました。共有レビューPDFとしてPDFを作成した後、UNIXマシンのリンクフォルダーにPDFを送信します(リンクフォルダーはフォルダーのショートカットパスを意味します)。その後、crontabを介して異なる方法で実行されるシェルスクリプトにより、コメントとしてpdfが有効になり、スクリプトを介してpdfがいくつかのフォルダーにコピーされます。
ここで問題となるのは、UNIXリンクフォルダ内のファイルをコピーするときはいつでも(FileUtils.copyInputStream()
関数を使用しているリンクフォルダにファイルをコピーするため)、コメント対応スクリプトが実行され、pdf(.shスクリプトの.shスクリプト私のプログラムからは実行されないUNIX。)しかし、ファイルの保存中に、ファイルが読み取り専用であるというプロンプトが表示され、ファイルを保存せずに終了します。しかし、同じことを手動で行うと(UNIXではファイルを手動でリンクフォルダーに配置)、コメントが有効になっているPDFファイルが作成されます。これは、ファイルをフォルダーに送信するサンプルコードです。
try{
String outFname="SR_"+fname;
srEnabledIs = new FileInputStream(pdfoutputPath+fname);
if(srEnabledIs!=null && !path.equals("")){
Date today = new Date();
SimpleDateFormat format = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss_a");
String timeStamp=format.format(today);
FileUtils.copyInputStreamToFile(srEnabledIs, new File(path+outFname));
logtracker.writeDebugNormalLog("AnnotationMain","file copied to " + path);
try{
lrfile.renameTo(new File(pdfinputPath+"/pdf/"+fname.split("[.]")[0]+"_"+timeStamp+".pdf"));
}catch(Exception ex){
logtracker.writeDebugNormalLog("AnnotationMain", ex.getMessage());
ex.printStackTrace();
}
}else{
if(path.equals("")){
logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as path not found.");
}
if(srEnabledIs==null){
logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as InputStream is null.");
}
if(srEnabledIs==null && path.equals("")){
logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as InputStream is null and path not found.");
}
}
}catch(IOException e){
logtracker.writeDebugNormalLog("AnnotationMain", e.getMessage());
e.printStackTrace();
}finally{
if(srEnabledIs!=null){
srEnabledIs.close();
}
}
ただし、同じプログラムが他のUNIXマシンで正常に実行および実行されています。私は本当に状況を理解することができません。この状況から私を助けてください。