Как использовать файлы аргументов командной строки для Javac на Windows? - PullRequest
0 голосов
/ 09 июня 2018

Вот мой рабочий каталог:

C:\GitHub\

И в этом каталоге у меня есть:

class\ src\ cmain

и cmain - мой файл аргументов.

Все моиФайлы исходного кода .java находятся под src\

main.java CalcHandler.java

А вот содержимое cmain

-cp .\class\
-sourcepath .\src\
-d .\class\
.\src\main.java

Но когда я попытался скомпилировать src\main.java в PowerShell, используя cmain, он не распознается:

PS C:\GitHub> javac @cmain
Usage: javac <options> <source files>                                                                                   
where possible options include:                                                                                           
-g                         Generate all debugging info                                                                  
-g:none                    Generate no debugging info
....

Я пробовал это в Linux, и оно работало нормально, содержимое было точно таким же.

Что я должен сделать, чтобы это работало?

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

1 Ответ

0 голосов
/ 09 июня 2018
javac '@cmain'

PowerShell анализирует аргументы команд, а @cmain означает взятие массива $cmain и расширение его до одного аргумента на элемент (сплаттинг).Передав явную строку, вы можете обойти этот автоматизм.

Другие параметры:

javac --% @cmain

Это скажет PowerShell прекратить анализ аргументов после маркера --% и просто передать их дословнодругая программа.

javac `@cmain 

Это исключит @, поэтому его специальное поведение не будет применяться.

Всегда помните, что функциям оболочки потребуются обходные пути, если вы хотите передать этот синтаксис другомупрограммы.Это ничем не отличается от % расширения переменных среды в cmd или большинства оболочек, токенизирующих аргументы в пробелах и других пробелах.Небольшая служебная программа, которая просто печатает свои аргументы, может пригодиться для диагностики таких случаев.

...