我在目录中有两个java文件,它们都不在一个包中。我希望他们中的一个能够引用另一个。这样做的正确方法是什么?
目前在A类中,我正在尝试引用B类,并收到此错误:
[javac] A.java:11: cannot find symbol
[javac] symbol : constructor B(java.lang.String)
[javac] location: class B
[javac] B b = new B(path);
[javac] ^
以下无效:
谢谢!
答案 0 :(得分:4)
此外,如果每个文件中都有一个包引用,则需要从根目录编译它。我有同样的问题,点击此页面,没有一个答案真的有帮助。所以我有2个文件:
〜/工作/ COM /域/包装/库/ A.java
〜/工作/ COM /域/包装/库/ B.java
A.java:
package com.domain.pkg.library;
class A {
}
B.java:
package com.domain.pkg.library;
class B {
A a = new A();
}
你需要进入〜/工作并输入:
javac com/domain/pkg/library/B.java
希望能有所帮助。
答案 1 :(得分:3)
你没有发布你的代码,所以我的回答可能是错的,但你很可能在B中使用一个构造函数,当没有像这样的定义时,使用字符串作为参数。
这是我的测试:
class A {
B b = new B("b");
}
class B {
}
$javac A.java
A.java:2: cannot find symbol
symbol : constructor B(java.lang.String)
location: class B
B b = new B("b");
^
1 error
看起来不一样吗?
答案 2 :(得分:0)
可能您没有正确设置编译依赖项和类路径。如果A需要B,你需要首先编译B来获得B.class,当你编译A时,确保B.class位置在你的类路径中,这样编译器就可以找到它。