javac编译错误 - “...抽象;无法实例化”

时间:2010-01-15 16:35:11

标签: java

Java新手...尝试运行示例应用。我包括似乎与问题相关的代码部分。如果需要,我可以发布整个测试应用程序。我

我正在尝试实现errorhandler来处理应用程序通过应用程序运行的htmlunit lib / test解析目标网站时生成的css警告。

我不确定应该如何实现MycssErrorHandler类来调用ErrorHandler。我也不确定如何在代码/测试类的主体中实例化对象。

思考/评论/代码块会有所帮助..

谢谢!

编译时出现以下错误:

[root@toshiba parseapp2]# javac -Xlint -classpath '/opt/htmlunit/lib/*:/parseapp2/' sjsu_classes.java

warning: [path] bad path element "/opt/htmlunit/lib/xml-apis.jar": no such file or directory
warning: [path] bad path element "/opt/htmlunit/lib/xercesImpl.jar": no such file or directory
warning: [path] bad path element "/opt/htmlunit/lib/serializer.jar": no such file or directory
sjsu_classes.java:92: sjsu_classes.MycssErrorHandler is abstract; cannot be instantiated
        ErrorHandler ierr = new MycssErrorHandler(); 
                        ^
1 error
3 warnings

====================================

测试代码块是:

import org.w3c.css.sac.ErrorHandler;
    import com.gargoylesoftware.htmlunit.DefaultCssErrorHandler;
import org.xml.sax.SAXParseException;

public class sjsu_classes {

    //==handle the warnings thrown from the js functions..
    public static class MyIncorrectnessListener implements IncorrectnessListener
    {
      @Override
      public void notify(String arg0, Object arg1)
      {
        //System.err.println("Argument : " + arg0.toString() + ", Object : ");
      }
    }     

    //==handle the warnings thrown from the css functions..
//  public static class MycssErrorHandler implements DefaultCssErrorHandler
//  public static class MycssErrorHandler implements ErrorHandler
//  public class MycssErrorHandler implements ErrorHandler
    public abstract class MycssErrorHandler implements ErrorHandler
//  protected class MycssErrorHandler implements ErrorHandler
    {
      //@Override
      public void notify(String arg0, Object arg1)
      {
        //System.err.println("Argument : " + arg0.toString() + ", Object : ");
      }
      //@Override
        public void fatalError(SAXParseException ex)
        {
            //fatals.add(ex);
        }
    } 

    //public static void main(String[] args) throws Exception {
    public void main(String[] args) throws Exception {

        // Create and initialize WebClient object
//     WebClient webClient = new WebClient(BrowserVersion.EXPLORER_7);
       WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
           //WebClient webClient = new WebClient();

        IncorrectnessListener ilisten = new MyIncorrectnessListener(); 
        ErrorHandler ierr = new MycssErrorHandler(); 
        webClient.setIncorrectnessListener(ilisten); 
        webClient.setCssErrorHandler(ierr); 

2 个答案:

答案 0 :(得分:3)

您的MycssErrorHandler课程为abstract,这意味着您无法直接使用它。

无法实例化abstract类;它只能从中继承。

您需要从类定义中删除abstract关键字。

删除abstract关键字后,您还需要让您的类在ErrorHandler界面中实现所有三种方法。 (errorfatalErrorwarning

答案 1 :(得分:1)

如错误所示,您已将MycssErrorHandler声明为抽象。您不能创建一个抽象的类。您必须删除abstract关键字或实现从MycssErrorHandler派生的其他类。

(为什么你需要将MycssErrorHandler声明为抽象?你应该使用接口实现一个具体的类:))