谁知道com.macfaq.io.SafeBufferedReader这个类在哪啊,我下了个javaio.jar包,可里面没这个类
 

解决方案 »

  1.   

    急急。谁快来告诉我啊,我找了这个类的源码,放在项目里,运行出现这个错误
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:  at PooledWeblog.main(PooledWeblog.java:60)
      

  2.   

    PooledWeblog.java:60
    60行是啥内容?
    异常信息不全,贴全
      

  3.   

    public class SafeBufferedReader extends BufferedReader {  public SafeBufferedReader(Reader in) {
        this(in, 1024);
      }  public SafeBufferedReader(Reader in, int bufferSize) {
        super(in, bufferSize);
      }  private boolean lookingForLineFeed = false;
      
      public String readLine() throws IOException {
        StringBuffer sb = new StringBuffer("");
        while (true) {
          int c = this.read();
          if (c == -1) { // end of stream
            if (sb.length() == 0) return null;
            return sb.toString();
          }
          else if (c == '\n') {
            if (lookingForLineFeed) {
              lookingForLineFeed = false;
              continue;
            }
            else {
              return sb.toString();
            }
          }
          else if (c == '\r') {
            lookingForLineFeed = true;
            return sb.toString();
          }
          else {
            lookingForLineFeed = false;
            sb.append((char) c);
          }
        }
      }}就是这个  放在源码里面自己用把 不要用javaio了 那个包好像是有问题
      

  4.   

    我用源码,还是有问题
    这是我的代码
    //PooledWeblog.java
    import java.io.*;
    import java.util.*;
    import com.macfaq.io.SafeBufferedReader;
    public class PooledWeblog {
    private BufferedReader in;//输入流
    private BufferedWriter out;//输出流
    private int numberOfThreads;//记录线程的数量
    private List entries = Collections.synchronizedList(new LinkedList( ));
    private boolean finished = false;//标志是否结束
    private int test = 0;
    public PooledWeblog(InputStream in, OutputStream out, int numberOfThreads) {
    this.in = new BufferedReader(new InputStreamReader(in));
    this.out = new BufferedWriter(new OutputStreamWriter(out));
    this.numberOfThreads = numberOfThreads;
    }
    public boolean isFinished( ) {
    //当结束时返回
    return this.finished;
    }
    public int getNumberOfThreads( ) {
    return numberOfThreads;//返回线程的个数
    }
    public void processLogFile( ) {
    for (int i = 0; i < numberOfThreads; i++) {
    //去创建新的线程
    Thread t = new LookupThread(entries, this);
    t.start( );//启动线程
    }
    try {
    String entry = null;
    while ((entry = in.readLine( )) != null) {
    if (entries.size( ) > numberOfThreads) {
    try {
    Thread.sleep((long) (1000.0/numberOfThreads));//停止线程一段时间
    }
    catch (InterruptedException e) {}
    continue;
    }
    synchronized (entries) {
    entries.add(0, entry);
    entries.notifyAll( );
    }
    Thread.yield( );
    } // 循环终止
    }
    catch (IOException e) {
    System.out.println("Exception: " + e);//输出错误信息
    }
    this.finished = true;
    // 结束那些仍然等待的线程
    synchronized (entries) {
    entries.notifyAll( );
    }
    }
    //记录错误信息
    public void log(String entry) throws IOException {
    out.write(entry + System.getProperty("line.separator", "\r\n"));
    out.flush( );
    }
    public static void main(String[] args) {
    try {
    PooledWeblog tw = new PooledWeblog(new FileInputStream(args[0]),
    System.out, 100);
    tw.processLogFile( );
    }
    catch (FileNotFoundException e) {
    System.err.println("Usage: java PooledWeblog logfile_name");
    }
    catch (ArrayIndexOutOfBoundsException e) {
    System.err.println("Usage: java PooledWeblog logfile_name");
    }
    catch (Exception e) {
    System.err.println(e);
    e.printStackTrace( );
    }

    }
    //LookupThread.java
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class LookupThread extends Thread {
    private List entries;
    PooledWeblog log; //在回调的时候使用
    //检索线程是否在列表中
    public LookupThread(List entries, PooledWeblog log) {
    this.entries = entries;
    this.log = log;
    }
    //启动线程的函数
    public void run( ) {
    String entry;
    while (true) {
    synchronized (entries) {
    while (entries.size( ) == 0) {
    if (log.isFinished( )) return;
    try {
    entries.wait( );
    }
    catch (InterruptedException e) {
    }
    }
    entry = (String) entries.remove(entries.size( )-1);
    }
    int index = entry.indexOf(' ', 0);
    //获得远程主机地址
    String remoteHost = entry.substring(0, index);
    String theRest = entry.substring(index, entry.length( ));
    try {
    //获得远程主机的地址
    remoteHost =InetAddress.getByName(remoteHost).getHostName( );
    }
    catch (Exception e) {
    }
    try {
    log.log(remoteHost + theRest);
    }
    catch (IOException e) {
    }
    this.yield( );
    }
    }
    }
     
    //Weblog.java
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import com.macfaq.io.SafeBufferedReader;
    public class Weblog {
    public static void main(String[] args) {
    Date start = new Date( );//得到起始日期
    try {
    //使用FileInputStream 类来装饰输入流
    FileInputStream fin = new FileInputStream(args[0]);
    Reader in = new InputStreamReader(fin);//获得Read类型输入流
    SafeBufferedReader bin = new SafeBufferedReader(in);
    String entry = null;
    while ((entry = bin.readLine( )) != null) {
    // 分离出IP地址
    int index = entry.indexOf(' ', 0);
    String ip = entry.substring(0, index);//得到IP地址
    String theRest = entry.substring(index, entry.length( ));
    // 找到主机名字,并打印出来
    try {
    InetAddress address = InetAddress.getByName(ip);//通过IP地址获得此地址
    System.out.println(address.getHostName( ) + theRest);
    }
    catch (UnknownHostException e) {
    System.out.println(entry);
    }
    } // 循环终止
    }
    catch (IOException e) {
    System.out.println("Exception: " + e);
    }
    Date end = new Date( );//得到新日期
    long elapsedTime = (end.getTime()-start.getTime( ))/1000;
    System.out.println("Elapsed time: " + elapsedTime + " seconds");
    } // main终止
    }
    ----------------------------------------------------
    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    SafeBufferedReader cannot be resolved to a type
    SafeBufferedReader cannot be resolved to a type at Weblog.main(Weblog.java:12)
      

  5.   

    我用源码,还是有问题
    这是我的代码
    //PooledWeblog.java
    import java.io.*;
    import java.util.*;
    import com.macfaq.io.SafeBufferedReader;
    public class PooledWeblog {
    private BufferedReader in;//输入流
    private BufferedWriter out;//输出流
    private int numberOfThreads;//记录线程的数量
    private List entries = Collections.synchronizedList(new LinkedList( ));
    private boolean finished = false;//标志是否结束
    private int test = 0;
    public PooledWeblog(InputStream in, OutputStream out, int numberOfThreads) {
    this.in = new BufferedReader(new InputStreamReader(in));
    this.out = new BufferedWriter(new OutputStreamWriter(out));
    this.numberOfThreads = numberOfThreads;
    }
    public boolean isFinished( ) {
    //当结束时返回
    return this.finished;
    }
    public int getNumberOfThreads( ) {
    return numberOfThreads;//返回线程的个数
    }
    public void processLogFile( ) {
    for (int i = 0; i < numberOfThreads; i++) {
    //去创建新的线程
    Thread t = new LookupThread(entries, this);
    t.start( );//启动线程
    }
    try {
    String entry = null;
    while ((entry = in.readLine( )) != null) {
    if (entries.size( ) > numberOfThreads) {
    try {
    Thread.sleep((long) (1000.0/numberOfThreads));//停止线程一段时间
    }
    catch (InterruptedException e) {}
    continue;
    }
    synchronized (entries) {
    entries.add(0, entry);
    entries.notifyAll( );
    }
    Thread.yield( );
    } // 循环终止
    }
    catch (IOException e) {
    System.out.println("Exception: " + e);//输出错误信息
    }
    this.finished = true;
    // 结束那些仍然等待的线程
    synchronized (entries) {
    entries.notifyAll( );
    }
    }
    //记录错误信息
    public void log(String entry) throws IOException {
    out.write(entry + System.getProperty("line.separator", "\r\n"));
    out.flush( );
    }
    public static void main(String[] args) {
    try {
    PooledWeblog tw = new PooledWeblog(new FileInputStream(args[0]),
    System.out, 100);
    tw.processLogFile( );
    }
    catch (FileNotFoundException e) {
    System.err.println("Usage: java PooledWeblog logfile_name");
    }
    catch (ArrayIndexOutOfBoundsException e) {
    System.err.println("Usage: java PooledWeblog logfile_name");
    }
    catch (Exception e) {
    System.err.println(e);
    e.printStackTrace( );
    }

    }
    //LookupThread.java
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class LookupThread extends Thread {
    private List entries;
    PooledWeblog log; //在回调的时候使用
    //检索线程是否在列表中
    public LookupThread(List entries, PooledWeblog log) {
    this.entries = entries;
    this.log = log;
    }
    //启动线程的函数
    public void run( ) {
    String entry;
    while (true) {
    synchronized (entries) {
    while (entries.size( ) == 0) {
    if (log.isFinished( )) return;
    try {
    entries.wait( );
    }
    catch (InterruptedException e) {
    }
    }
    entry = (String) entries.remove(entries.size( )-1);
    }
    int index = entry.indexOf(' ', 0);
    //获得远程主机地址
    String remoteHost = entry.substring(0, index);
    String theRest = entry.substring(index, entry.length( ));
    try {
    //获得远程主机的地址
    remoteHost =InetAddress.getByName(remoteHost).getHostName( );
    }
    catch (Exception e) {
    }
    try {
    log.log(remoteHost + theRest);
    }
    catch (IOException e) {
    }
    this.yield( );
    }
    }
    }
     
    //Weblog.java
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import com.macfaq.io.SafeBufferedReader;
    public class Weblog {
    public static void main(String[] args) {
    Date start = new Date( );//得到起始日期
    try {
    //使用FileInputStream 类来装饰输入流
    FileInputStream fin = new FileInputStream(args[0]);
    Reader in = new InputStreamReader(fin);//获得Read类型输入流
    SafeBufferedReader bin = new SafeBufferedReader(in);
    String entry = null;
    while ((entry = bin.readLine( )) != null) {
    // 分离出IP地址
    int index = entry.indexOf(' ', 0);
    String ip = entry.substring(0, index);//得到IP地址
    String theRest = entry.substring(index, entry.length( ));
    // 找到主机名字,并打印出来
    try {
    InetAddress address = InetAddress.getByName(ip);//通过IP地址获得此地址
    System.out.println(address.getHostName( ) + theRest);
    }
    catch (UnknownHostException e) {
    System.out.println(entry);
    }
    } // 循环终止
    }
    catch (IOException e) {
    System.out.println("Exception: " + e);
    }
    Date end = new Date( );//得到新日期
    long elapsedTime = (end.getTime()-start.getTime( ))/1000;
    System.out.println("Elapsed time: " + elapsedTime + " seconds");
    } // main终止
    }
    ----------------------------------------------------
    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    SafeBufferedReader cannot be resolved to a type
    SafeBufferedReader cannot be resolved to a type at Weblog.main(Weblog.java:12)
      

  6.   

    import com.macfaq.io.SafeBufferedReader; 
     这句去掉嘛~~
      

  7.   

    去掉的话
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:  at PooledWeblog.main(PooledWeblog.java:60)
      

  8.   

    那个程序怎么测试啊,是不是需要一个log文件啊
      

  9.   

    包含这个类SafeBufferedReader包在哪里可以找到????