我用的是Jdk v1.6.0.5 for Windows
程序分成两个文件
文件1代码如下:
package Tp1;
public class Tp1{
public void say(){
System.out.println("OK");
}

}文件2代码如下:
import Tp1.*;
public class Testpackage{
public static void main(String args[]){
Tp1 t1 = new Tp1();
t1.say();
}
}
文件1编译后,在根目录下生成一个Tp1包,包里有一个文件Tp1.class.
然后编译文件2,并运行文件2的代码,出现错误提示,如下:java:4: 无法访问 Tp1
错误的类文件: D:\Testpackage\Tp1.java
文件不包含类 Tp1
请删除该文件或确保该文件位于正确的类路径子目录中。
                Tp1 t1 = new Tp1();
                ^
1 错误处理已完成。奇怪的是,把Tp1的源文件Tp1.java的后缀名随便改一下或者把Tp1.java剪切到另一个文件夹里,也就保证根目录里找不到Tp1.java,这个程序就可以正常运行了.
不知道怎么回事,有什么办法解决这个问题吗?也就是不用把Tp1.java移走或者改其名.

解决方案 »

  1.   

    package的声明必须与文件所在目录相同,按照你的写法就应该是
    当前目录
      ┣Tp1
      ┃ ┗Tp1.java
      ┃
      ┃
      ┗Testpackage.java
      

  2.   

    我现在得文件结构是:Testpackage文件夹里有Testpackage.java文件、Testpackage.class文件、Tp1.java文件和Tp1文件夹,Tp1文件夹里有Tp1.class文件,代码如上,具体怎么改呢?
      

  3.   

    Tp1.java应该放在Tp1文件夹中。java文件必须与声明的package相同
      

  4.   

    你是在Testpackage调用Tp1。Tp1吧,如果是在ide中编译运行的你的程序是没有错误的,如果实在dos控制台编译运行那当然有错啦,因为jvm根本不知道你的Tp1。Tp1位于Testpackage外的某个目录下,你只有吧Tp1。Tp1设置在class_path,jvm才能找到