###前提・実現したいこと・問題
javaでの外部コマンド(PMD)の実行
PMD(ソースコード解析ツール)を使って、ソースコードを検査することができる実行可能Jarファイルを作りたいです。 Eclipseを使って、以下のコードを実行すると、PMDのメッセージがコンソールに出力されたので、これでできたと思い、 PmdCheckをエクスポートして、実行可能JarファイルPmdCheck.jarにしたのですが、 そのJarファイルをcmdで実行してもアクションが返ってきません。(Checkディレクトリで実行) 複雑で申し訳ないですがよろしくお願いします。
###ディレクトリ構造
・Eclipseにした場合 Check - src - test - PmdCheck.java - bin - test - PmdCheck.class - tools - pmd-bin-5.4.0 - bin - pmd ・Jarファイルにした場合 Check - PmdCheck.jar - tools - pmd-bin-5.4.0 - bin - pmd ※「pmd-bin-5.4.0」で1つのディレクトリ
###該当のソースコード
Java
1package test; 2 3import java.io.BufferedReader; 4import java.io.File; 5import java.io.IOException; 6import java.io.InputStream; 7import java.io.InputStreamReader; 8 9 10public class PmdCheck { 11 public static void main(String[] args) { 12 PmdCheck bc = new PmdCheck(); 13 System.out.println(bc.check("C:/Users/Matt/Documents/Sample.java")); 14 } 15 16 public String check(String filePath) { 17 18 String os = System.getProperty("os.name"); 19 String result = ""; 20 21 // Windows version 22 if(os.contains("Windows")){ 23 //pmd.bat: PMDを実行するバッチファイル 24 String WindowsPmdPath = "tools/pmd-bin-5.4.0/bin/pmd.bat"; 25 String[] WindowsPmdCmd = new String[]{WindowsPmdPath, "-d", filePath, "-f", "text", "-R", "java-basic,java-design"}; 26 result = execProcess(WindowsPmdCmd); 27 } 28 return result; 29 } 30 31 /** 32 * 外部環境でコマンドを実行 33 * @param cmd 実行するコマンドの文字列配列 34 * @return コマンド実行で得た標準出力の文字列 35 * @throws IOException 36 */ 37 public static String execProcess(String[] cmd) { 38 try { 39 40 Runtime rt = Runtime.getRuntime(); 41 Process process = rt.exec(cmd); 42 InputStream is = process.getInputStream(); 43 BufferedReader br = 44 new BufferedReader(new InputStreamReader(is,"UTF-8")); 45 46 StringBuilder sb = new StringBuilder(); 47 String line; 48 while((line = br.readLine()) != null) { 49 sb.append(line).append('\n'); 50 } 51 return sb.toString(); 52 } catch(IOException e) { 53 return e.getMessage(); 54 } 55 } 56} 57
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。