私はprocmailを使用して受信メールに対してカスタム解析を実行しようとしていますが、javaプログラムを呼び出して、標準のパイプを使ってメッセージの本文と本文を読み込みたいとします。 perlとpythonを使ってメールをフィルタリングする例はたくさんありますが、javaを使用しているものはありません。開始一例として、私のprocmailのレシピ:Procmailのレシピ、パイプをJavaのstdin
:0 hbfW
|"/usr/bin/java -cp /root/parser HelloWorldApp"
そして、私のjavaアプリだけで標準入力のエコー:
import java.io.*;
public class HelloWorldApp {
public static void main(String[] args) {
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while(true){
try {
String inputStr = null;
if((inputStr=bufReader.readLine()) != null) {
System.out.println(inputStr);
}
else {
break;
}
}
catch (Exception e) {
break;
}
}
}
}
procmailのログ:
procmail: Executing "/usr/bin/java -cp /root/parser HelloWorldApp"
/bin/sh: /usr/bin/java HelloWorldApp: No such file or directory
procmail: Error while writing to "/usr/bin/java HelloWorldApp"
procmail: Rescue of unfiltered data succeeded
1)は私が右のrecipieを作成していますデータをjavaにパイプしますか? 2)私はprocmailに引き渡しを処理させたいので、(f)フラグを使った私のレシピ。しかし、私のJavaプログラムから作成した結果をprocmailに送り返す方法はありますか? stdout?
これは私が元々持っていたものですが、ログは1つではなく複数のコマンドを実行しているように見えます。ここで私は引用符なしで戻ってきたので、私はここに何か大きなものがあると思う。 'procmailの:実行 "は/ usr/binに/ javaの、-cp、/ルート/パーサ、がHelloWorldApp" : "INCLUDERC = /ホーム/ vmail/perimetric.com /スクリプト/ Procmailの/ rc.java" procmailの割り当てスレッド "main"の例外java.lang.NoClassDefFoundError:HelloWorldApp' –
Procmail構文に問題はありませんが、コンマはコマンドラインがどのように個々の引数にどのように解析されたかを示しています。しかし、Javaからのエラーメッセージを解釈する手助けはできません。 Javaクラスパスのようなものが必要だと思います。 – tripleee