今天对一个java package中的文件进行编译的时候出现了一个这样的问题,见图,从图中应该可以很明白的看出来,问题出来cannot resolve symbol上。一般出现这个问题多是由于classpath的问题。在hello文件下有四个java文件,他们的代码中在开始都加上了
package hello;
其中有三个可以顺利通过编译,原因是因为他们没有互相用到某个类的实例。而第四个用到前三个类的实例,虽然在同一文件夹hello下,亦同在package hello 下,为什么会cannot resolve symbol 呢?
经过一番思考,把HelloAction.java拿到hello文件夹外进行编译,就通过了。我想可能是因为,当编译这个文件的时候,编译器会到当前目录下寻找hello包中的那三个class文件,即在当前目录下寻找一个hello文件夹,由于没有这个文件夹,所以是cannot resolve symbol。
在这个道理上,把这个java文件拿到hello文件夹外编译,就通过了。
原先java的project都是在IDE下做的,这种问题没有遇到过,今天手动编译,发现了这个问题。编译好了,把class文件放到hello文件夹下就可以了,这样它就是在package hello下了。