Javac无法识别同一目录中的类

时间:2019-04-04 17:20:25

标签: java compiler-errors classpath javac

我正在尝试编译依赖于外部库的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在当前目录中。

有人可以解释一下我的问题是什么吗?我不明白。

2 个答案:

答案 0 :(得分:2)

您应该执行以下操作:

  • 将所有库放在名为lib的目录中
  • 将所有创建的类放在当前目录中。
  • 对于用于jars的类,您将需要导入语句
  • 对于创建的类,不需要导入语句。
  • 使用以下命令进行编译:
  

$ javac -cp“ lib / *:”。 Driver.java

答案 1 :(得分:0)

我对-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