Javac找不到位于同一目录中的类

Nic*_*unt 4 java import class javac

我正在尝试编译Java文件,我收到此错误消息:

$ javac -cp "bc-j-mapi-w-2.4.jar;apache-commons/*;json-org/*;lib/*" BrightcoveVideoQueryPOI.java
BrightcoveVideoQueryPOI.java:57: cannot find symbol
symbol  : class BrightcoveAPI
location: class BrightcoveVideoQueryPOI
        BrightcoveAPI brightcoveAPI = new BrightcoveAPI(BrightcoveAPI.PROD_READ_URL_TOKEN);
        ^
BrightcoveVideoQueryPOI.java:57: cannot find symbol
symbol  : class BrightcoveAPI
location: class BrightcoveVideoQueryPOI
        BrightcoveAPI brightcoveAPI = new BrightcoveAPI(BrightcoveAPI.PROD_READ_URL_TOKEN);
                                          ^
BrightcoveVideoQueryPOI.java:57: cannot find symbol
symbol  : variable BrightcoveAPI
location: class BrightcoveVideoQueryPOI
        BrightcoveAPI brightcoveAPI = new BrightcoveAPI(BrightcoveAPI.PROD_READ_URL_TOKEN);
                                                        ^
3 errors
Run Code Online (Sandbox Code Playgroud)

这表明javac找不到类BrightcoveAPI.我不确定问题是什么,因为它在同一目录中:

$ ls
apache-commons  bc-j-mapi-w-2.4.jar  BrightcoveAPI.class  BrightcoveAPI.java  BrightcoveVideoQueryPOI.java  json-org  lib
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 9

您需要.在类路径中包含(当前目录):

javac -cp ".;bc-j-mapi-w-2.4.jar;apache-commons/*;json-org/*;lib/*" BrightcoveVideoQueryPOI.java
Run Code Online (Sandbox Code Playgroud)

一些说明:

  • .在默认的类路径中,但如果您用于-cp指定显式类路径,那么只有在您指定它时才包含它.
  • 这个答案的先前版本添加.到类路径的末尾,但是aioobe说它通常放在第一位,这是有意义的,所以我已经相应地进行了编辑.(按顺序搜索类路径,因此,如果您有一个类的两个副本,一个在.库中,一个在库中,那么您可能希望该.版本取代库版本,因此您需要先列出它.但当然,拥有两个不同类的副本通常不是一件好事!)
  • 您粘贴的内容看起来像*nix shell,但您正在使用;,这是Windows上预期的分隔符.(在*nix上预期的分隔符是:.)这可能是正确的,例如,如果你正在使用Cygwin,但我想我会提到它以防万一.