编译多个类并传递命令行参数

时间:2018-11-16 20:49:16

标签: java javac

我将如何使用命令行(不使用其他软件)编译两个类并将参数传递给它?

我为自己创建了一个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 :(得分:1)

您可以通过在on命令中指定多个名称来直接编译

javac file1.java file2.java

或通过使用*,将编译当前目录中的所有.java文件

javac *.java

答案 1 :(得分:0)

由于您的路径包含空格,因此必须加引号。您可以通过循环遍历sources.txt并引用整行来做到这一点:

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

或者您可以尝试dir /x生成sources.txt,并按照dir docs

用短路径生成
  

/ x

     

显示为非8dot3文件名生成的简称。显示与/ n相同,但是在长名称之前插入了短名称。

一种或多种方式,在Windows Batch sux中编写脚本。