首先让我道歉。我已经编写了很长时间了,但我是Java的新手。我觉得这应该是一个简单的错误,但我一直在努力工作半小时无济于事:
public String getHtml(HttpServletRequest request) {
try {
WebPageFetcher fetcher = new WebPageFetcher("http://google.com");
} catch (Exception e) {
log.error("WebPageFetcher failed ...");
}
return "<div id=\"header\">" + fetcher.getPageContent() + "</div>";
}
实现WebPageFetcher的位置如下所示: http://www.javapractices.com/topic/TopicAction.do?Id=147
我收到了一个错误:
cannot find symbol
symbol : variable fetcher
location: class myclass
我做错了什么?
答案 0 :(得分:5)
fetcher仅在声明它的块中可见,即try块。尝试在块之前声明,以便在整个方法中可见:
WebPageFetcher fetcher = null;
try {
fetcher = new WebPageFetcher("http://google.com");
}
答案 1 :(得分:1)
在返回时,变量fetcher
超出范围。
尝试:
public String getHtml(HttpServletRequest request) {
try {
WebPageFetcher fetcher = new WebPageFetcher("http://google.com");
// return within scope
return "<div id=\"header\">" + fetcher.getPageContent() + "</div>";
} catch (Exception e) {
log.error("WebPageFetcher failed ...");
}
return /*something that make sense*/ "<html>500</html>";
}
答案 2 :(得分:1)
变量fetcher
的生命周期仅在最封闭的范围内,即围绕它的最嵌套的大括号({ }
)。因此,当您到达尝试使用它的return
语句时,它就不再存在。