-----Test.java------//import com.speek.hello.hello1;
//import com.speek.hello.hello2;
import com.speek.hello.*;
public class Test
{
public static void main(String[] args)
{
hello1 h1 = new hello1();
hello2 h2 = new hello2();
h1.sayHello();
h2.sayHello();
}
}-----hello1.java------package com.speek.hello;public class hello1
{
public hello1()
{
System.out.println("Hello1 Construct...");
}
public void sayHello()
{
System.out.println("Hello1 SayHello");
}
}-----hello2.java------package com.speek.hello;public class hello2
{
public hello2()
{
System.out.println("Hello2 Construct...");
}
public void sayHello()
{
System.out.println("Hello2 SayHello");
}
}
编译hello1.java  hello2.java后,已经将他们生成的class文件放在C:\;并且设置环境变量classpath = C:\;
我测试过,如果用那两行注释的话,可以编译和运行,但是如果用import com.speek.hello.*;的时候就会出错:D:\AllWork\Java基础>javac Test.ja
Test.java:8: 无法访问 hello1
错误的类文件: .\hello1.java
文件不包含类 hello1
请删除该文件或确保该文件位于正确的类路径子
                hello1 h1 = new hello1();
1 错误

解决方案 »

  1.   

    你用package com.speek.hello;看看行不行啊?
      

  2.   

    编译hello1.java  hello2.java后,已经将他们生成的class文件放在C:\; 
    以上操作就有问题吧
    应该是  -com 
            --speek
               ---hello
                 ----hello1.class 
                 ----hello2.class 文件目录结构应该如上吧
      

  3.   

    大哥,你的Test类中要加入package啊
    加入:package com.speek.hello; 肯定不会报错!
      

  4.   

    建目录C:\com.speek.hello
    把编译好的两个hello类放进去
      

  5.   

    将hello1.class ,hello2.class 
    放到C:\\com\speek\hello 下面
      

  6.   

    建目录C:\com\speek\hello 
    把编译好的两个hello类放进去
      

  7.   

    而且你就是
    //import com.speek.hello.hello1;
    //import com.speek.hello.hello2;
    的导入,也应该不能运行因为类路径根本就找不到这两个类
      

  8.   

    为什么在我这里是没有错误的呢.楼主是不是其他地方弄错了呢.不过如果这三个类在同一个包下时就不用写import com.speek.hello.*;
    了,加了这个段代码,会提示这句在这里没有被用到,也就是没有用处.象下面这样加是可以的,不会有警告,因为它认为这个包下可能不只这两个类,你只想导这两个类是不会有任何警告的.
    //import com.speek.hello.hello1;
    //import com.speek.hello.hello2;但也只是个警告而已啊,怎么会在 楼主那就报错了呢.
      

  9.   

    不懂.能不能说的明白点,怎么用?加到Test.java上吗?
      

  10.   

    给楼主一个准确的解释吧:你用import com.speek.hello.hello1;import com.speek.hello.hello2;和import com.speek.hello.*;是一样的  问题可能出在两个方面:
    1.你要把Test.java和com/speek/hello放在一个目录下面
    2.保证在Test.java的当前目录下面没有hello1.java,hello1.class,hello2.java,hello2.class这样就没有问题了!
      

  11.   

    问题解决了 ,在Test.java中加package com.speek.hello;就可以了
    但是运行的时候还得到com.speek.hello下真是麻烦
    就是运行的时候还得java com.speek.hello.Test为什么我自己写的就要这样,那java提供的为什么就可以不要这样呢?
      

  12.   

    为什么test.java一定也要package com.speek.hello;
    编译和运行挺麻烦的
    可不可以让test.java不用package啊?只要回答下这个的我多给分噢```
      

  13.   

    使用默认包就可以了,去掉package com.speek.hello 就可以了
      

  14.   

    不行,一开始我也没加package,但是用import com.speek.hello.*;的时候说找不到hello1
      

  15.   

    在环境变量里,加入你的类包就可以了c:\com\speek\
    hello
      

  16.   

    环境变量classpath 设置需要正确
      

  17.   

    你不是在classpath里设了%JAVA_HOME%\jre\lib\rt.jar吗,
    这就是为什么java提供的类的路径
      

  18.   

    包的问题可以解决,还不是很难的,马士兵的视频教程里面好像谈到这个问题,可以去看看这些视频,http://www.ibeifeng.com/thread-htm-fid-331.html
      

  19.   

    你如果没注释的话,会去这个目录下 com.speek.hello找你的两个class字节文件,你应该把那两个放到com/speek/hello目录下就可以了