3

Java でのハードコーディングの回避に関する多くの記事を読みました。しかし、私の要件にそれを適用する方法について明確なアイデアを得ることができませんでした.いくつかの調査を行った後、この質問をしています. 以下は私のコードスニペットです。その中で、パス名のハードコーディングを避けたいと思いProcess pr = rt.exec()ます。それを行う方法に関する提案はありますか?

public class StartUp {

String executable = getStringValue("executable.run");
    String filein = getStringValue("incoming.file");
    String params1 = getStringValue("executable.params1");
    String params2 = getStringValue("executable.params2");
    String log = getStringValue("log.file");
String ss = "Started";
public String startCommand() throws IOException, InterruptedException{



Runtime rt = Runtime.getRuntime();
//Process pr = rt.exec("C:\\server\\rd.exe -a C:\\file.lic -z[+] // C:\\File\\log.txt");

Process pr = rt.exec(executable+" "+params1+" "+filein+" "+params2+" "+log);
    BufferedReader input = new BufferedReader(new InputStreamReader 
(pr.getInputStream()));

String line=null;
StringBuffer start= new StringBuffer();
    while((line=input.readLine()) != null) {
                start.append("ServerStarted" + line + "\n");
        System.out.println(line);
}

int exitVal = pr.waitFor();
System.out.println("Exited with error code "+exitVal);
return line;



//return start.toString();
}
private static String getStringValue(String string) {
    return string;

}
}
4

3 に答える 3

3
  • システム プロパティを使用します-Dpath=...System.getProperty("path");
  • 構成ファイルを使用する
  • コマンドラインで渡す
  • JNDI から入手する
  • 等。

言い換えれば、さまざまな方法がたくさんありますが、実際のニーズによって最適な方法は異なります。

于 2013-10-08T15:05:08.563 に答える
0

文字列を適切な名前の に割り当てることもできますprivate final static String。そうすれば、コードが読みやすくなります (また、後で変更する必要がある場合に更新しやすくなります)。

private final static String rtCommand = ""C:\\server\\rd.exe -a C:\\file.lic -z[+] C:\\File\\log.txt";//or something more smartly named. You would know what to name it.
....
Process pr = rt.exec(rtCommand);
于 2013-10-08T15:13:34.953 に答える