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

问题描述 投票:0回答:2

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

有人可以解释一下我的问题是什么吗?我无法理解。

java compiler-errors classpath javac
2个回答
2
投票

您应该执行以下操作:

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.