黑马程序员技术交流社区

标题: 程序编译问题 [打印本页]

作者: 齐连涛    时间: 2012-10-26 18:07
标题: 程序编译问题
本帖最后由 齐连涛 于 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的文件,所以编译不通过。为什么?
作者: 李润根    时间: 2012-10-26 18:23
最好能把错误发上来看看

你配置classpath值的时候,先查找本目录的class文件,因为你的程序目录已经有个BufferedReader.class,所以编译的时候在这个目录找到了,就不会再找其他目录,但你这个class文件没有对应的构造函数,所以编译失败了
作者: 班志国    时间: 2012-10-26 19:38
把多余 的删了  重新 编译 不就 解决了吗
作者: 刘丽娜    时间: 2012-10-26 20:10
没明白啊

作者: 舒远    时间: 2012-10-26 20:21
由于你的当前目录中存在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:50
楼上讲的很好,这个和类的调用有关,如果本包中有类的话,如果其他包中也有这个类,那么它会调用本包中的类。
作者: 齐连涛    时间: 2012-10-31 10:59
舒远 发表于 2012-10-26 20:21
由于你的当前目录中存在BufferedReader.java,在编译CopyTextByBuf1 类的时候,引用的BufferedReader就不是j ...

恩 你说的跟我想的一样 但是你还提供了这么个解决方法,真好 谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2