Именованные параметры Javafx с кавычками / пробелами из консоли - PullRequest
0 голосов
/ 13 июня 2018

Я хочу запустить программу javafx из консоли и получить доступ к (именованным) параметрам с помощью getParameters()

Мои параметры сохраняются в переменной с именем args.

Когда я вызываюjava -jar test.jar --arg1="hello world" arg2=123, это работает.
Однако, когда я набираю java -jar test.jar $args,
, параметры разделяются на --arg1="hello и world"

enter image description here

Как мне сохранить именованные аргументы как "arg1" -> "hello world"?

enter image description here

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я взял этот пример Java для тестирования:

public class Echo extends Application {

   /*
    * (non-Javadoc)
    * @see javafx.application.Application#start(javafx.stage.Stage)
    */
   @Override
   public void start(Stage primaryStage) throws Exception {

      Parameters params = getParameters();
      System.out.println("\nRaw");
      params.getRaw().forEach(e -> {
         System.out.println(e);
      });

      System.out.println("\nNamed");
      params.getNamed().keySet().forEach(key -> {
         System.out.println("key : " + key + " / value : " + params.getNamed().get(key));
      });

      System.out.println("\nUnnamed");
      params.getUnnamed().forEach(unnamed -> {
         System.out.println(unnamed);
      });

      Platform.exit();
   }

   public static void main(String[] args) {
      launch(args);
   }

}

На самом деле он хорошо работает в Windows.

 D:\Profiles\PagboStack\Desktop           
 λ set args=--arg1="Hello World" arg2=123 

 D:\Profiles\PagboStack\Desktop           
 λ echo %args%                            
 --arg1="Hello World" arg2=123            

 D:\Profiles\PagboStack\Desktop           
 λ java -jar Echo.jar %args%              

 Raw                                      
 --arg1=Hello World                       
 arg2=123                                 

 Named                                    
 key : arg1 / value : Hello World         

 Unnamed                                  
 arg2=123                                 

Но с unix все сложнее.Я добился успеха благодаря этому ответу .
Обратите внимание, что эта ссылка предоставляет другие решения, которые вы можете рассмотреть в соответствии с вашими потребностями.

[13/06/2018 14:59.32]  /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ export args='--arg1="Hello World"|arg2=123'

───────────────────────────────────────────────────────────
[13/06/2018 15:05.04]  /drives/d/profiles/pabgo/Desktop
[pagbo.stack] ➤ IFS='|'

───────────────────────────────────────────────────────────
[13/06/2018 15:05.07]  /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ "$JAVA_HOME"/bin/java.exe -jar Echo.jar $args

Raw
--arg1="Hello World"
arg2=123

Named
key : arg1 / value : "Hello World"

Unnamed
arg2=123

Суть в том, чтоизменить внутренний разделитель полей (IFS), который по умолчанию является пробелом.

0 голосов
/ 13 июня 2018

Документы по аргументам командной строки Oracle утверждает, что для аргументов нужно заключить в кавычки значение "hello world", чтобы его можно было рассматривать как один аргумент.Попробуйте отредактировать ваш arguments_file, чтобы они были в кавычках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...