gpt4 book ai didi

java - "Cannot find symbol"为我自己的类(class)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:03 24 4
gpt4 key购买 nike

我没有设置 %CLASSPATH%。据我所知,这应该不是问题,因为 Javac 将采用当前目录的类路径。

正如您在下面看到的,javac 无法找到我的 Case 类,即使它位于完全相同的目录中。关于为什么会发生这种情况的任何想法?当我使用 Eclipse 时,这段代码工作正常。

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>dir /B
Case.class
Case.java
EntryPoint.java

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>javac EntryPoint.java

EntryPoint.java:16: cannot find symbol
symbol : class Case
location: class codejam2011.Round0.D.EntryPoint
ArrayList<Case> cases = new ArrayList<Case>();
^
EntryPoint.java:16: cannot find symbol
symbol : class Case
location: class codejam2011.Round0.D.EntryPoint
ArrayList<Case> cases = new ArrayList<Case>();
^
EntryPoint.java:24: cannot find symbol
symbol : class Case
location: class codejam2011.Round0.D.EntryPoint
cases.add(new Case(new Integer(count), line));
^
3 errors

C:\Documents and Settings\joep\My Documents\GCJ\src\codejam2011\Round0\D>

更新 1:

尝试从我的包根目录 (src) 编译后,我收到一个新错误(即使在删除 Case.class 文件之后)

C:\Documents and Settings\joep\My Documents\GCJ\src>javac -cp . codejam2011/Round0/D/EntryPoint.java

codejam2011\Round0\D\EntryPoint.java:16: cannot access codejam2011.Round0.D.Case

bad class file: .\codejam2011\Round0\D\Case.java
file does not contain class codejam2011.Round0.D.Case
Please remove or make sure it appears in the correct subdirectory of the classpath.
ArrayList<Case> cases = new ArrayList<Case>();
^
1 error

C:\Documents and Settings\joep\My Documents\GCJ\src>

更新 2:它似乎是从另一个包中获取 Case.java 文件。

C:\Documents and Settings\joep\My Documents\GCJ\src>javac -d ../classes codejam2011\Round0\D\*.java

.\codejam2011\Round0\D\Case.java:4: duplicate class: codejam2011.Round0.C.Case
public class Case
^
codejam2011\Round0\D\EntryPoint.java:16: cannot access codejam2011.Round0.D.Case

bad class file: .\codejam2011\Round0\D\Case.java
file does not contain class codejam2011.Round0.D.Case
Please remove or make sure it appears in the correct subdirectory of the classpath.
ArrayList<Case> cases = new ArrayList<Case>();
^
2 errors

C:\Documents and Settings\joep\My Documents\GCJ\src>

最佳答案

你需要从包根目录编译,而不是从包内部编译。

因此,cdsrc 文件夹并从那里编译。

javac -cp . codejam2011/Round0/D/EntryPoint.java

更新:根据您的新问题,您需要以同样的方式重新编译Case.java。它显然是以同样错误的方式编译的(从包内部)。

关于java - "Cannot find symbol"为我自己的类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com