Cuando paso más de tres opciones en cmd ... el resultado se muestra como NULL

 package main.java;
import org.apache.commons.cli.*;

public class cli {

    public static void main(String[] args) throws Exception {
         Options options = new Options();
     Option token = new Option("t", "token", true, "token");
     token.setRequired(true);
     options.addOption(token);

     Option projectname = new Option("p", "projectname", true, "project");
     projectname.setRequired(true);
     options.addOption(projectname);
     
     Option branch = new Option("b", "branchname", true, "branch");
     branch.setRequired(true);
     options.addOption(branch);
     
     Option pullreq = new Option("PR", "pullreq", true, "pullreq");
     pullreq.setRequired(true);
     options.addOption(pullreq);
     CommandLineParser parser = new DefaultParser();
     HelpFormatter formatter = new HelpFormatter();
     CommandLine cmd = null;

     try {
         cmd = parser.parse(options, args);
     } catch (ParseException e) {
         System.out.println(e.getMessage());
         formatter.printHelp("utility-name", options);

         System.exit(1);
     }

     String token1 = cmd.getOptionValue("token");
     String projectname1 = cmd.getOptionValue("projectname");
     String branch1 = cmd.getOptionValue("branch");
     String pullreq1 = cmd.getOptionValue("pullreq");
     
   /*if(pullreq != null){
         String pullreq1 = cmd.getOptionValue("pullreq");
         System.out.println(pullreq1);
     }
     */
     System.out.println(token1);
     System.out.println(projectname1);
     System.out.println(branch1);

 }
    }

Cuando lo construí, los valores de la tercera y cuarta opción se toman como nulos. java -jar testreport-1.0.2-SNAPSHOT.jar -t token -p proyecto -b rama -PR pullreq

Token proyecto nulo

0
Padmapriya Kp 20 ene. 2021 a las 15:25

1 respuesta

La mejor respuesta

El problema radica en esta línea:

String branch1 = cmd.getOptionValue("branch");

Simplemente olvidó que la opción correspondiente, dada a la instancia Options, tiene una propiedad de opción larga de "branchname" en lugar de solo "branch". Entonces, simplemente puede cambiarlo a:

String branch1 = cmd.getOptionValue("branchname");

Y funcionará. Al menos para mí lo hizo.

0
gthanop 22 ene. 2021 a las 15:10