同目录下两个类,互相找不到.为什么
在同一个文件夹里有A.java和B.java
在A.JAVA中使用B
例如B b=new B();
总是找不到B这个类.B.java可以正常通过编译,执行
编译错误为
cannot resolve symbol
----------------解决方案--------------------------------------------------------
import ********;
----------------解决方案--------------------------------------------------------
给源代码
----------------解决方案--------------------------------------------------------
//A.java
import java.io.*;
public class A
{
B b;
public static void main(String args[])
{
System.out.print("hello java");
b.g();
}
}
//B.java
import java.io.*;
public class B{
public static void main(String args[])
{
B b=new B();
b.g();
}
public void g()
{
System.out.println("B is carry on");
}
}
A.java和B.java在同一个文件夹里
----------------解决方案--------------------------------------------------------
因为你是在A中的main方法中调用了b.g()
而b这个实例在A中不是static的,也就是说,在static类型的方法中(比如main)是不允许调用非static类型的方法或者变量的(比如说b)
而且,你的B b;这样写没有给b创建一个实例,所以就算能运行,也将会抛出一个Null Point异常
更改
A.java中的 B b; 更改为 static B b = new B();
----------------解决方案--------------------------------------------------------
斑竹,把b封装起来 再import 进a类里也行吧?这样?
----------------解决方案--------------------------------------------------------
没有那个必要import 是用在不同的文件夹中,也就是不同的打包。
而斑竹说的是在静态方法中不可以调用实例方法,不是一回事
----------------解决方案--------------------------------------------------------
应该是你的classpath设置有问题吧!
设置的最前面应该是一个点(.),表示大拿前文件夹!!
不知道对不对?
----------------解决方案--------------------------------------------------------
以下是引用kimyier在2005-12-9 12:01:00的发言:
在同一个文件夹里有A.java和B.java
在A.JAVA中使用B
例如B b=new B();
总是找不到B这个类.B.java可以正常通过编译,执行
编译错误为
cannot resolve symbol
你没有设置好环境变量,除了最基本的设置以外,还有加一个"."在classpath中(没有引号),它代表从当前目录去找。
----------------解决方案--------------------------------------------------------