编译java时找不到符号

时间:2014-05-27 17:34:20

标签: java javac

我在同一个包演示中有几个类,但最重要的是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但仍然会收到同样的错误

1 个答案:

答案 0 :(得分:1)

扩展我的评论:

javac查找类时,它查找的文件夹基于该类的完全限定名称。

因此,在您的情况下,MyServerImpl的完全限定名称为demo.MyServerImpl。因此,当编译器遇到MyServerImpl中的Server.java时,它会查找名为demo的文件夹,如果找到该文件夹​​,则会查找MyServerImpl.java

如果你cd 进入演示,这将导致编译失败,因为demo显然不包含自己(否则你可能会有一些破碎的操作系统)。

因此,您需要cd进入 demo上面的文件夹。例如,如果您的文件层次结构为src为root,其中包含demo包,其中包含Server.javaMyServerImpl.java

  1. cdsrc,如果您ls / dirdemo是(其中一个)显示的文件夹< / LI>
  2. javac demo/Server.java
  3. 完成(希望)