Javac可以';找不到同一目录中的类
我正在尝试编译一个Java文件,并收到以下错误消息:Javac可以';找不到同一目录中的类,java,class,import,javac,Java,Class,Import,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
$ 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
这表明javac找不到类BrightcoveAPI。我不确定问题出在哪里,因为它在同一个目录中:
$ ls
apache-commons bc-j-mapi-w-2.4.jar BrightcoveAPI.class BrightcoveAPI.java BrightcoveVideoQueryPOI.java json-org lib
您需要在类路径中包含
(当前目录):
javac -cp ".;bc-j-mapi-w-2.4.jar;apache-commons/*;json-org/*;lib/*" BrightcoveVideoQueryPOI.java
一些注意事项:
位于默认类路径中,但如果使用
指定显式类路径,则仅在指定该类路径时才会包含该类路径-cp
- 这个答案的前一个版本在类路径的末尾添加了
,但是说它通常放在第一位,这很有意义,所以我进行了相应的编辑。(类路径是按顺序搜索的,因此如果您有一个类的两个副本,一个在
中,另一个在库中,那么您可能希望
版本取代库版本,因此您需要首先列出它。但当然,一个类有两个不相同的副本通常不是一件好事!) - 粘贴的内容看起来像*nix shell,但您使用的是
代码>,这是Windows上需要的分隔符。(在*nix上,预期的分隔符是
)这可能是正确的,例如,如果您使用的是Cygwin,但我想我会提到它以防万一:
javac
不会将该目录作为附加默认值添加到您的目录中
此行为允许对项目(源代码文件集)一致地调用javac
编译器,而不依赖于调用编译器的用户的目录。如果是其他方式,则必须确保始终从同一工作目录编译以获得相同的结果
----在ruakh的精彩回答中看到评论后编辑----
您看到的第二个问题与第一个问题无关。“找不到或加载主类”是因为您使用源代码文件名调用java
命令,而不是该源代码文件中定义的类名
java
命令运行类,而不是源代码文件。当您记住单个源代码文件可以包含多个类(即使它们通常不包含)时,这就更有意义了。通常,您会将
作为类路径中的第一个目录。太棒了,答案如此简单总是很好的!谢谢你提供的额外信息,是的,我正在使用Cygwin。现在一切都很好。我爱你就是因为这个,因为这个问题,我被困了两个小时。我用过;在linux中,由于有多个示例