A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 齐连涛 中级黑马   /  2012-10-26 18:07  /  1476 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 齐连涛 于 2012-10-31 11:00 编辑

程序编译问题
import java.io.*;
class CopyTextByBuf1  
{
        public static void main(String[] args) throws IOException
        {
                BufferedReader bufr=null;
                BufferedWriter bufw=null;
                bufr=new BufferedReader(new FileReader("MathDemo.java"));
                bufw=new BufferedWriter(new FileWriter("MathDemo_c.java"));
                String line=null;
                while ((line=bufr.readLine())!=null)
                {
                        bufw.write(line);
                        bufw.flush();
                }
                bufr.close();
                bufw.close();

        }
}

编译通不过
后来发现,该程序所在目录有一个名为BufferedReader.java的文件,所以编译不通过。为什么?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
最好能把错误发上来看看

你配置classpath值的时候,先查找本目录的class文件,因为你的程序目录已经有个BufferedReader.class,所以编译的时候在这个目录找到了,就不会再找其他目录,但你这个class文件没有对应的构造函数,所以编译失败了
回复 使用道具 举报
把多余 的删了  重新 编译 不就 解决了吗
回复 使用道具 举报
没明白啊
回复 使用道具 举报
舒远 黑马帝 2012-10-26 20:21:30
报纸
由于你的当前目录中存在BufferedReader.java,在编译CopyTextByBuf1 类的时候,引用的BufferedReader就不是java.io包下的了。这是由于你的classpath配置,在当前目录中首先查找需要引用到的类。找到了就不会去jdk的lib目录中找了。
如果你不想删除当前目录下的BufferedReader,那么在代码中修改一下就OK了;
import java.io.*;
class CopyTextByBuf1  
{
         public static void main(String[] args) throws IOException
         {
                java.io.BufferedReader bufr=null;
                 BufferedWriter bufw=null;
                 bufr=new java.io.BufferedReader(new FileReader("MathDemo.java"));
                 bufw=new BufferedWriter(new FileWriter("MathDemo_c.java"));
                 String line=null;
                 while ((line=bufr.readLine())!=null)
                 {
                         bufw.write(line);
                         bufw.flush();
                 }
                 bufr.close();
                 bufw.close();

        }
}
回复 使用道具 举报
楼上讲的很好,这个和类的调用有关,如果本包中有类的话,如果其他包中也有这个类,那么它会调用本包中的类。
回复 使用道具 举报
舒远 发表于 2012-10-26 20:21
由于你的当前目录中存在BufferedReader.java,在编译CopyTextByBuf1 类的时候,引用的BufferedReader就不是j ...

恩 你说的跟我想的一样 但是你还提供了这么个解决方法,真好 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马