我在同一个包演示中有几个类,但最重要的是Server.java和MyServerImpl.java。在Server.java中我有这段代码
package demo;
public class Server
{public static void main( String[] args ) throws Exception
{
MyServerImpl s = new MyServerImpl("blablabla");
...
}
类MyServerImpl
package demo;
public class MyServerImpl extends MyServerPOA {
private String location;
public MyServerImpl( String location )
{
this.location = location;
}
public void add ( String value ){
System.out.println("name " + value + location );
}
}
当我尝试使用javac进行编译时出现此错误
cannot find symbol
symbol : class MyServerImpl
location: class demo.Server
MyServerImpl s = new MyServerImpl("blablabla");
我尝试使用此命令javac project/demo/Server.java
进行编译,当我在demo文件夹中时
javac Server.java
但仍然会收到同样的错误
答案 0 :(得分:1)
扩展我的评论:
当javac
查找类时,它查找的文件夹基于该类的完全限定名称。
因此,在您的情况下,MyServerImpl
的完全限定名称为demo.MyServerImpl
。因此,当编译器遇到MyServerImpl
中的Server.java
时,它会查找名为demo
的文件夹,如果找到该文件夹,则会查找MyServerImpl.java
。
如果你cd
进入演示,这将导致编译失败,因为demo
显然不包含自己(否则你可能会有一些破碎的操作系统)。
因此,您需要cd
进入 demo
上面的文件夹。例如,如果您的文件层次结构为src
为root,其中包含demo
包,其中包含Server.java
和MyServerImpl.java
:
cd
到src
,如果您ls
/ dir
,demo
是(其中一个)显示的文件夹< / LI>
javac demo/Server.java