不废话,看源文件
a.java
import world.*;
class a
{
public static void main(String [] args)
{
b bobject=new b();
bobject.print();
}
}
b.java
package world;
public class b
{
public void print()
{
System.out.println("i am class b");
}
}
编译b.java后,将b.class放入了world文件夹下,然后编译a.java出现如下错误:
a.java:7: 无法访问 b
错误的类文件: .\b.java
文件不包含类 b
请删除该文件或确保该文件位于正确的类路径子目录中。
                b bobject=new b();
                ^
但是如果将a.java的impoprt world.*;改为import world.b;就没问题了,这个为什么呢?

解决方案 »

  1.   

    编译时将b.java放到world目录下,命令:javac world/b.java.然后javac a.java就可以了。
      

  2.   

    如果把b.java放入world文件夹中,直接用jvac a.java就可以编译的,但是我不知道为什么要把b.java放入world文件夹中?
    我翻了好几种java书,都没有提到把b.java放入包文件夹中。
      

  3.   

    javac -cp b.java是要先把b.java放入world中么?
    我没放,结果现实:C:\java code\package>javac -cp b.java
    javac: 无源文件
    用法: javac <options> <source files>
    -help 用于列出可能的选项
      

  4.   

    楼主把a.java设成public class 再直接编译a.java试试,看看b.java编译不?
      

  5.   

    我想我的问题应该很简单的,只是上周上java课没认真听老师讲
    为什么大家很少答复呢?闲给分太少了?
      

  6.   

    一般周六周日是加班/补觉时间,你手边如果有《Java 核心技术》卷一 看看“4.7包”(如果是第7版在126页)。
      

  7.   

    java 的包和目录是对应的,这个和.net的namespace不同。
    比如:你的类为,com.test.Test.java
    那么编译后对应的目录就是:com/test/Test.class
      

  8.   

    楼主,你检查下你当然a.java的目录下是不是有个没删除的b.class啊,有的话就删除了再试。