Компилировать несколько классов и передавать аргументы командной строки - PullRequest
0 голосов
/ 16 ноября 2018

Как бы я скомпилировал два класса, используя командную строку (без использования дополнительного программного обеспечения) и передав ему аргументы?

Я сам создал файл sources.txt, который содержит определения, где находится каждый класс. Я сделал это с помощью следующей команды

dir /s /B *.java > sources.txt

Затем я пытаюсь сделать javac @sources.txt, хотя это не помогает, так как я получаю следующую ошибку:

error: invalid flag: C:\Users\Adrian
Usage: javac <options> <source files>
use --help for a list of possible options

Кроме того, мой путь содержит один пробел после моего имени пользователя. Адриан Так что в sources.txt это выглядит так: C:\Users\Adrian $\

Я пытался поместить вокруг них кавычки или знак процента, но затем я получаю сообщение об ошибке, которое указывает, что файл не был найден.


Полный основной код:

package me.adrian;

import java.io.FileNotFoundException;

public class Main {

    public static void main(String[] args) {
            CSVoperator CSVfile = new CSVoperator();

            try {
                CSVfile.readCSV(args); //get args into there.
            }
            catch (FileNotFoundException e){
                e.printStackTrace();
            }
    }

}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Поскольку ваши пути содержат пробел, они должны быть заключены в кавычки.Вы можете сделать это, повторяя цикл sources.txt и заключая в кавычки всю строку:

FOR /F %%i IN (sources.txt) DO "javac %%i"

или вы можете попробовать dir /x для генерации sources.txt с коротким путем согласно dirдокументы

/ x

Отображение коротких имен, созданных для имен файлов не из 8dot3.Отображение аналогично отображению для / n, но короткое имя вставляется перед длинным именем.

Так или иначе, сценарии в Windows Batch sux.

0 голосов
/ 16 ноября 2018

Вы можете скомпилировать напрямую, указав несколько имен в команде

javac file1.java file2.java

или используя *, все .java файлы в текущем каталоге будут скомпилированы

javac *.java
...