我在文件中输入了如下代码:package cn.com;public class Test
{
    int i;
    
    public Test(int i)
    {
         this.i=i;
     }    public void print()
    {
       system.out.println(i);
     }
}这样的一个类。但在用javac -d . Test.java编译时出现了一个不解的错误:
e:\javalesson\Test.java:3: class Test is public, should be declared in a file named
 Test.java
public class Test
       ^
1 error是什么的原因?
是不是环境变量的设置有关系?但应该不是啊。
还是与jdk的版本有关系?

解决方案 »

  1.   

    e:\javalesson\Test.java
    你看,你的Test类应该写到Test.java文件内,你做到了,.但是你的package不对,.java的包结构和目录结构是一一对应的,区别于C#.
      

  2.   

    可能你的文件是小写的test.java吧
      

  3.   

    要和包路径一致嘛。文件目录结构也必须是cn\com\Text.java
      

  4.   

    这个是我自己要生成的包cn。com
      

  5.   

    我把你的程序编译过了,应该是你的文件名字写成小写的test.java了
    还有print()方法中的System要首字母大写!!!
      

  6.   

    程序没问题,就跟楼上说的一样,你的System的S要大写就可以编译通过了,如果还有什么错误,那可能你的环境配置有问题,可以参考网上环境配置的文章看看!
      

  7.   

    如果没看错,楼主写的是
    javac -d . Test.java-d 后面多了个点
      

  8.   

    我是在ultra-edit32中写的,有自动功能。
    但为什么我不把类定义为public时可以通过?
      

  9.   

    一旦有定义为public的class存在,那么该文件的名称就必须和这个class的名称一样。大小写也必须一致。
      

  10.   

    把public去掉  肯定能解决的
      

  11.   

    居然发言发了这么多? 你们真的是研究Java的嘛? 反正我是C++程序员.package cn.com;
    e:\javalesson\Test.java这两个就足够说明问题了.我前面都白说了... ...
      

  12.   

    lxw1982217(文龙) ( ) 信誉:100    Blog  2006-11-23 16:37:11  得分: 0  
      
       我是在ultra-edit32中写的,有自动功能。
    但为什么我不把类定义为public时可以通过?
      
     ====
    这就是类名和文件名要不一致的表现!
      

  13.   

    healer_kx(甘草{决心把CSDN改造成全国最大的文学爱好者的社区}) ( ) 信誉:100    Blog  2006-11-23 16:45:06  得分: 10  
     
     
       
    居然发言发了这么多? 你们真的是研究Java的嘛? 反正我是C++程序员.package cn.com;
    e:\javalesson\Test.java这两个就足够说明问题了.我前面都白说了... ...=====================================楼主都用-d编译了,和你说的包、目录没有关系,看来你是白说了。。