当前位置: 代码迷 >> Java相关 >> 同目录下两个类,互相找不到.为什么
  详细解决方案

同目录下两个类,互相找不到.为什么

热度:73   发布时间:2005-12-09 12:01:00.0
同目录下两个类,互相找不到.为什么

在同一个文件夹里有A.java和B.java

在A.JAVA中使用B

例如B b=new B();

总是找不到B这个类.B.java可以正常通过编译,执行


编译错误为
cannot resolve symbol

搜索更多相关的解决方案: cannot  文件夹  

----------------解决方案--------------------------------------------------------
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中(没有引号),它代表从当前目录去找。


----------------解决方案--------------------------------------------------------
  相关解决方案