2010-01-15 38 views
3

新來java ...試圖讓一個示例應用程序運行。我將包含與該問題相關的代碼部分。如果需要,我可以發佈整個測試應用程序。我javac編譯錯誤 - 「...抽象;不能被實例化」

我想實現錯誤處理程序來處理應用程序運行時通過htmlunit lib /測試解析目標網站時生成的css警告。

我不確定應該如何實現MycssErrorHandler類來調用ErrorHandler。我也不確定如何在代碼/測試類的主體中實例化對象。

想法/評論/代碼塊將有幫助..

謝謝!

我收到以下錯誤,當我編譯:

[[email protected] 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); 
+4

你應該接受解答您的疑問。你也應該閱讀一本關於Java的好書,比如Core Java。 – SLaks 2010-01-15 16:42:39

+0

嗨... 感謝您的回答....我看了很多線程試圖處理這個沒有運氣!因此,我所要做的就是基本上創建虛擬存根來覆蓋其他方法。 謝謝.. – 2010-01-15 22:34:09

回答

3

MycssErrorHandler類是abstract,這意味着你不能直接使用它。

一個abstract類不能被實例化;它只能被繼承。

您需要從類定義中刪除abstract關鍵字。

一旦您刪除了abstract關鍵字,您還需要讓您的課程實現ErrorHandler界面中的所有三種方法。 (error,fatalErrorwarning

1

正如錯誤所述,您已將MycssErrorHandler聲明爲抽象。你不能創建一個抽象的類。您將不得不移除抽象關鍵字或實現從MycssErrorHandler派生的其他類。

(爲什麼你需要聲明MycssErrorHandler抽象呢?你應該實現使用界面:)一個具體的類)

+0

他將其抽象爲刪除其他編譯器錯誤,因爲他沒有完全實現接口。看到我的答案。 – SLaks 2010-01-15 16:40:56

+1

是的..那個數字。除非實現接口所需的所有內容,否則不能實例化該類。 – futureelite7 2010-01-15 17:01:13