Javac 无法识别同一目录中的 类
Javac does not recognize classes that are in the same directory
我正在尝试编译依赖于外部库的 Java 程序。程序在 IDE 中编译没有错误。在终端中编译时,我遇到了编译器无法识别我编写的代码的问题。 所有文件都在同一目录中。我正在使用 Makefile。
以下是 javac 调用和由此产生的错误。所有 Java 和 Jar 文件都在当前目录中。
$ javac -cp "./*" Driver.java
Driver.java:22: error: cannot find symbol
DataSetProcessor processor = new DataSetProcessor();
^
symbol: class DataSetProcessor
location: class Driver
Driver.java:22: error: cannot find symbol
DataSetProcessor processor = new DataSetProcessor();
^
symbol: class DataSetProcessor
location: class Driver
Driver.java:29: error: cannot find symbol
HashMap<Integer, Dealer> map = processor.getDealerVehicleRelationship(dataSetID, vehicleIDsList);
^
symbol: class Dealer
location: class Driver
3 errors
Dealer.java & DataSetProcessor.java 在当前目录中。
谁能解释一下我的问题是什么?看不懂。
您应该执行以下操作:
- 将所有库放在名为 lib 的目录中,
- 将您创建的所有类放入当前目录。
- 对于您用于 jars 的 类,您将需要导入语句
- 对于您创建的 类,您不需要导入语句。
- 使用以下命令编译:
$ javac -cp "lib/*:." Driver.java
我对 -cp 的使用是错误的。我正在使用 Mac;我不确定是不是这个原因。
现在最终的编译器调用是:
$ javac -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver.java
并且对 运行 程序的调用是:
$ java -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver
我正在尝试编译依赖于外部库的 Java 程序。程序在 IDE 中编译没有错误。在终端中编译时,我遇到了编译器无法识别我编写的代码的问题。 所有文件都在同一目录中。我正在使用 Makefile。
以下是 javac 调用和由此产生的错误。所有 Java 和 Jar 文件都在当前目录中。
$ javac -cp "./*" Driver.java
Driver.java:22: error: cannot find symbol
DataSetProcessor processor = new DataSetProcessor();
^
symbol: class DataSetProcessor
location: class Driver
Driver.java:22: error: cannot find symbol
DataSetProcessor processor = new DataSetProcessor();
^
symbol: class DataSetProcessor
location: class Driver
Driver.java:29: error: cannot find symbol
HashMap<Integer, Dealer> map = processor.getDealerVehicleRelationship(dataSetID, vehicleIDsList);
^
symbol: class Dealer
location: class Driver
3 errors
Dealer.java & DataSetProcessor.java 在当前目录中。
谁能解释一下我的问题是什么?看不懂。
您应该执行以下操作:
- 将所有库放在名为 lib 的目录中,
- 将您创建的所有类放入当前目录。
- 对于您用于 jars 的 类,您将需要导入语句
- 对于您创建的 类,您不需要导入语句。
- 使用以下命令编译:
$ javac -cp "lib/*:." Driver.java
我对 -cp 的使用是错误的。我正在使用 Mac;我不确定是不是这个原因。
现在最终的编译器调用是:
$ javac -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver.java
并且对 运行 程序的调用是:
$ java -cp lib/commons-io-2.6.jar:lib/json-20180813.jar:. Driver