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);
答案 0 :(得分:3)
您的MycssErrorHandler
课程为abstract
,这意味着您无法直接使用它。
无法实例化abstract
类;它只能从中继承。
您需要从类定义中删除abstract
关键字。
删除abstract
关键字后,您还需要让您的类在ErrorHandler
界面中实现所有三种方法。 (error
,fatalError
和warning
)
答案 1 :(得分:1)
如错误所示,您已将MycssErrorHandler声明为抽象。您不能创建一个抽象的类。您必须删除abstract关键字或实现从MycssErrorHandler派生的其他类。
(为什么你需要将MycssErrorHandler声明为抽象?你应该使用接口实现一个具体的类:))