DOS下提示错误:NoClassDefFoundError:Searcher(wrong name:news/Searcher)
程序中没有main函数吗?不明白
-------------------------------------------------------------------------------
package news;import com.heaton.bot.HTTP;
import com.heaton.bot.HTTPSocket;
import com.heaton.bot.ISpiderReportable;
import com.heaton.bot.IWorkloadStorable;
import com.heaton.bot.Spider;
import com.heaton.bot.SpiderInternalWorkload;//实现接口
public class Searcher
    implements ISpiderReportable {
  public static void main(String[] args) throws Exception {
    //SpiderInternalWorkload:基于内存的作业管理的方法
    IWorkloadStorable wl = new SpiderInternalWorkload();
    Searcher _searcher = new Searcher();
    Spider _spider
    //Spider(报告发现的对象,开始的URL,HTTP处理程序(HTTPSocket 类来通过HTTP 协议发送和接收数据),线程池的大小,制定的作业管理器)
        = new Spider(_searcher, "http://www.sina.com",
                     new HTTPSocket(), 100, wl);  
    //setMaxBody设置要下载的正文大小
    _spider.setMaxBody(100);
    _spider.start();
  }
  //发现内部链接
  public boolean foundInternalLink(String url) {
    return false;
  }
  //发现外部链接
  public boolean foundExternalLink(String url) {
    return false;
  }
  //发现其他链接(非HTML链接)
  public boolean foundOtherLink(String url) {
    return false;
  }
  //用于处理网页,Spider要完成的实际工作,page参数包含网页内容
  public void processPage(HTTP http) {
    System.out.println("扫描网页:" + http.getURL());
    new HTMLParse(http).start();
  }
  //用来请求一个被处理的网页,这个网页刚刚被Spider下载,参数page中是网页的内容,当这个网页产生HTML错误时参数error为真
  public void completePage(HTTP http, boolean error) {
  }
  //由Spider调用以确定查询字符串是否应删除,如果队列中的字符串应当删除,这一方法返回真
  public boolean getRemoveQuery() {
    return true;
  }
  //当Spider程序没有剩余的工作时调用这个方法
  public void spiderComplete() {
  }
}

解决方案 »

  1.   

    完整错误报告:
    Exxeption in thread "main" java.lang.NoClassDefFoundError:Searcher(wrong name:news/Searcher)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.LoadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
      

  2.   

    javac 报错 还是java报错?
      

  3.   

    应该是环境变量设置有问题吧。
    如果jdk安装目录为C:\JDK1.5.0,则先后在DOS命令行下执行如下两条命令即可。
    set JAVA_HOME=C:\JDK1.5.0 
    set PATH=%JAVA_HOME%\bin;%PATH%
      

  4.   

    javac -d . Search.java;java new.Search