第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在spring內(nèi)的java進程內(nèi)運行pmd

無法在spring內(nèi)的java進程內(nèi)運行pmd

慕絲7291255 2023-06-08 17:07:53
我想從 spring 作為服務在 java 進程(使用 ProcessBuilder 創(chuàng)建)中運行 pmd。public class PMDService {  private ProcessBuilder processBuilder;  private void createProcess() {    processBuilder = new ProcessBuilder();    final Map<String, String> envMap = processBuilder.environment();    String path = envMap.get("Path");    path += "../../../../../../../static-code-analyzers/pmd/bin;";    envMap.put("Path", path);  }  public String getCommand(PMDParameters params) {    final StringJoiner command = new StringJoiner(" ");    command.add("cmd")    .add("/c")    .add("pmd")    .add("-d")    .add(params.getSourceCodePath())    .add("-f")    .add(params.getOutputFormat())    .add("-R")    .add(params.getResultSet())    .add(">")    .add(params.getResultsPath());    return command.toString();  }  public void runAnalyzer(PMDParameters params) throws IOException, InterruptedException {    createProcess();    processBuilder.command(getCommand(params));    final Process process = processBuilder.start();    process.waitFor();  }當我使用郵遞員測試其余端點時,出現(xiàn)以下錯誤:""message": "無法運行程序 \"cmd /c pmd -d C:/bootcamp/Spring/springbootcode/springbootdemo -f xml -R rulesets/java/quickstart.xml > .\": CreateProcess error=2, The系統(tǒng)找不到指定的文件","在postman中輸入json{   "sourceCodePath": "C:/bootcamp/Spring/springbootcode/springbootdemo",    "resultsPath": ".",    "outputFormat": "xml",    "resultSet": "rulesets/java/quickstart.xml" }
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

分析

在提供的代碼段中,程序及其參數(shù)作為方法參數(shù)作為單個字符串值傳遞ProcessBuilder ProcessBuilder.command(String... command)

但事實并非如此:相反,程序及其參數(shù)應該分開傳遞。

解決方案

讓我們使用該ProcessBuilder ProcessBuilder.command(List<String> command)方法。

我們將適當?shù)販蕚渥址斜恚核鼘绦蚣捌鋮?shù)。

解決方案草案:

public List<String> getProgramAndArguments(PMDParameters params) {

    final List<String> programAndArguments = new ArrayList<String>();

    programAndArguments.add("cmd");

    programAndArguments.add("/c");

    programAndArguments.add("pmd");

    programAndArguments.add("-d");

    programAndArguments.add(params.getSourceCodePath());

    programAndArguments.add("-f");

    programAndArguments.add(params.getOutputFormat());

    programAndArguments.add("-R");

    programAndArguments.add(params.getResultSet());

    programAndArguments.add(">");

    programAndArguments.add(params.getResultsPath());

    return programAndArguments;

}


public void runAnalyzer(PMDParameters params) throws IOException, InterruptedException {

    createProcess();

    processBuilder.command(getProgramAndArguments(params));

    final Process process = processBuilder.start();

    process.waitFor();

}

此外,請通過提供正確的輸入來確保params.getResultsPath()具有正確的值:現(xiàn)在是.。


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號