2

Java コードから Perl スクリプト ファイルを実行しようとしていますが、うまくいきません。Perl スクリプトを変更し、引数を Java コード経由で渡すのではなく、その中に入れました。コマンドラインから実行するとスクリプトは正常に動作しますが、Java コード内では動作せず、常に「間違った」と出力されます!!. 別の Perl スクリプト (test.pl) を作成しましたが、機能していますが、目的のスクリプトが機能しませんか?? 私は netbeans7.3.1 (ubuntu) で作業しています。これが私のコードです:

package program;

import java.io.*;
//import java.lang.ProcessBuilder;
/**
 *
 * @author seed
 */
public class Program {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException,Exception {
        File input = new File("//home//seed//Downloads//MADA-3.2//sample");
        FileOutputStream out = new FileOutputStream(input);
        PrintWriter p = new PrintWriter(out);
        String s = "قصدنا في هذا القول ذكر";
        p.println(s);

        p.close();

        Process pro = Runtime.getRuntime().exec("perl /home/seed/Downloads/MADA+TOKAN.pl");

       pro.waitFor();
         if(pro.exitValue() == 0)  
                {  
                    System.out.println("Command Successful");  

                }  
         else{
         System.out.print("wrong");}   

        // TODO code application logic here
    }
}
4

2 に答える 2

0

私の推測では、ある種の文字列/パス変換の問題です。

コードに utf8 文字列が表示されます。パスが何かに変換されている可能性があります。

ファイル名 (MADA+TOKAN.pl) には特殊文字が含まれています。

また、スクリプト内の文字列と問題の文字列は同じではありません: (MADA 3.2 != MADA-3.2)

perl MADA+TOKAN.pl config=/home/seed/Downloads/mada/MADA-3.2/config ファイル/template.madaconfig ファイル=/home/seed/Downloads/mada/MADA 3.2/inputfile

perl MADA+TOKAN.pl config=/home/seed/Downloads/MADA-3.2/config-files/template.madaconfig file=/home/seed/Downloads/MADA-3.2/sample

于 2013-07-29T08:45:08.737 に答える
0

test.perl と MADA.perl は正常に実行されるため、perl スクリプトを見つけて実行しているようです。

perl スクリプトに渡される引数が予期されたものではないように聞こえます。すべての入力パラメーターをファイルにエコーするように perl スクリプトを変更できますか?

于 2013-07-31T12:33:43.957 に答える