我的问题与此问题几乎相同: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)。
提前致谢
答案 0 :(得分:0)
A
使用B
而B
不使用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
以上doens't使用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
上面对toto
和source
文件夹使用bin
。
答案 1 :(得分:0)
您必须将A.java和B.java移动到toto文件夹中。 请参阅:Managing Source and Class Files