【问题标题】:java packages: cannot find symbol (2)java包:找不到符号(2)
【发布时间】:2014-02-05 09:45:45
【问题描述】:

我的问题和这个差不多:java packages: cannot find symbol

假设您有两个类 A 和 B,分别在文件 A.java 和 B.java 中声明,而 B 在类 A 中使用。那么命令行“javac A.java”将完美运行。但不知何故,如果你在同一个包中添加 A 和 B(在每个文件的开头添加行:“package toto;”),那么“javac A.java”将给出符号“B”不能的错误找到了。

上面给出的解决方案(java packages: cannot find symbol)是调用编译行:“javac A.java B.java”,这样就可以了。我想知道是否有解决方案让它工作,但一次编译一个 java 文件。 (我使用 java 7)。

提前致谢

【问题讨论】:

  • 除了将它们放入包toto之外,您还必须将它们移动到toto目录中。

标签: java compiler-errors package


【解决方案1】:

A 使用BB 不使用A,对吗?这就是我从你的问题中猜到的。基于此,您应该先编译B,然后再编译A

javac B.java //generates B.class
javac -cp . A.java 
//It is important to add current-folder (location of B.class) in classpath

上面没有使用package 声明,用于使用package,我认为上面链接中发布的解决方案应该可以正常工作:

假设你的目录结构是:

main -|
     toto -|
           A.java, B.java

所以在主目录里面:

$main: javac -sourcepath ./toto -d ./toto B.java
$main: javac cp ./toto -sourcepath ./toto -d ./toto A.java

以上对sourcebin 文件夹都使用toto

【讨论】:

  • 我觉得没关系,如果A用B,B用A怎么办?
【解决方案2】:

您必须将 A.java 和 B.java 移动到 toto 文件夹中。 见:Managing Source and Class Files

【讨论】:

  • 这很好用,谢谢。显然我现在必须等待接受答案;)
猜你喜欢
  • 1970-01-01
  • 2021-08-11
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2014-02-07
相关资源
最近更新 更多