質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2380閲覧

Java(JVM?)からPMDの実行

Matt

総合スコア41

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/12/15 06:21

###前提・実現したいこと・問題
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

問題を解決することができました。
ディレクトリ構造の説明でCheckというディレクトリは省略していて、本当は「Check - コピー」という名前にしていました。どうやらディレクトリの名前に日本語or空白を使っていたため、PMDが動作しなかったのが原因でした。

ご協力いただいた方、申し訳ございません。
ありがとうございました。

投稿2016/12/16 07:48

Matt

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問