Java 找不到符号错误消息
在编写程序时,当我试图从另一个类调用setTextArea()方法时,得到了“找不到符号消息”。编译程序后,我收到以下错误消息: 不可编译源代码-错误的符号类型:gui.setTextArea 这是我的密码:Java 找不到符号错误消息,java,netbeans,Java,Netbeans,在编写程序时,当我试图从另一个类调用setTextArea()方法时,得到了“找不到符号消息”。编译程序后,我收到以下错误消息: 不可编译源代码-错误的符号类型:gui.setTextArea 这是我的密码: public class LinkExtractor { public static void main(String[] args) throws IOException { //Validate.isTrue(args.length == 1, "usage:
public class LinkExtractor {
public static void main(String[] args) throws IOException {
//Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String base = "http://uk.ask.com/web?q=";
String keyword ="flowers";
String tale="&search=&qsrc=0&o=312&l=dir";
String url =base+keyword+tale;
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
AssistantGUI gui=new AssistantGUI();
}
}
public static void print(String msg, Object... args) {
***//here is the problem line***
gui.setTextArea(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
我读了很多关于类似问题的帖子,但找不到解决办法。我觉得一切都很好。我正在创建一个AssistantGUI实例,然后使用它调用方法setTextArea(),为什么它不识别它?有什么想法吗?我将非常感谢您的帮助。您尚未声明
gui
,因此它自然无法找到它。在不同的方法中声明局部变量不起作用。您没有声明gui
,因此它自然找不到它。在其他方法中声明局部变量不起作用。在第一个类中,您在主方法中实例化了一个gui
局部变量。一旦退出main方法,该引用将丢失,并且方法print无法找到它。一个快速的解决方案是使gui
成为类的静态成员(但这不是正确的方法)
考虑阅读本文,但更重要的是,尝试摆脱所有那些
静态的(除了必须保持静态的主方法),使用new
,而使用实例。在第一个类中,您在主方法中实例化了一个gui
局部变量。一旦退出main方法,该引用将丢失,并且方法print无法找到它。一个快速的解决方案是使gui
成为类的静态成员(但这不是正确的方法)
考虑阅读本文,但更重要的是,尝试摆脱所有那些静态的(除了必须保持静态的main方法),使用新的,而使用实例。如果在main方法内的第一个类中创建gui对象,它将充当局部变量
无论何时从print方法调用setTextArea,这里都不允许引用
所以在你的第一节课上试试这些改动吧
public class LinkExtractor {
public static AssistantGUI gui=new AssistantGUI(); // create the object
public static void main(String[] args) throws IOException {
//Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String base = "http://uk.ask.com/web?q=";
String keyword ="flowers";
String tale="&search=&qsrc=0&o=312&l=dir";
String url =base+keyword+tale;
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
}
}
public static void print(String msg, Object... args) {
***//here is the problem line***
gui.setTextArea(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
公共类链接抽取器{
public static AssistantGUI gui=new AssistantGUI();//创建对象
公共静态void main(字符串[]args)引发IOException{
//isTrue(args.length==1,“用法:提供获取url”);
字符串基数=”http://uk.ask.com/web?q=";
String关键字=“鲜花”;
String tale=“&search=&qsrc=0&o=312&l=dir”;
字符串url=base+关键字+tale;
打印(“正在提取%s…”,url);
Document doc=Jsoup.connect(url.get();
Elements links=doc.select(“a[href]”);
打印(“\n链接:(%d)”,links.size());
用于(元素链接:链接){
打印(“*a:(%s)”,link.attr(“abs:href”),修剪(link.text(),35));
}
}
公共静态无效打印(字符串消息、对象…参数){
***//这是问题所在***
setTextArea(String.format(msg,args));
}
专用静态字符串修剪(字符串s,整型宽度){
如果(s.长度()>宽度)
返回s.substring(0,宽度-1)+“;
其他的
返回s;
}
}
如果在main方法中的第一个类中创建gui对象,它将充当局部变量
无论何时从print方法调用setTextArea,这里都不允许引用
所以在你的第一节课上试试这些改动吧
public class LinkExtractor {
public static AssistantGUI gui=new AssistantGUI(); // create the object
public static void main(String[] args) throws IOException {
//Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String base = "http://uk.ask.com/web?q=";
String keyword ="flowers";
String tale="&search=&qsrc=0&o=312&l=dir";
String url =base+keyword+tale;
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
}
}
public static void print(String msg, Object... args) {
***//here is the problem line***
gui.setTextArea(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
公共类链接抽取器{
public static AssistantGUI gui=new AssistantGUI();//创建对象
公共静态void main(字符串[]args)引发IOException{
//isTrue(args.length==1,“用法:提供获取url”);
字符串基数=”http://uk.ask.com/web?q=";
String关键字=“鲜花”;
String tale=“&search=&qsrc=0&o=312&l=dir”;
字符串url=base+关键字+tale;
打印(“正在提取%s…”,url);
Document doc=Jsoup.connect(url.get();
Elements links=doc.select(“a[href]”);
打印(“\n链接:(%d)”,links.size());
用于(元素链接:链接){
打印(“*a:(%s)”,link.attr(“abs:href”),修剪(link.text(),35));
}
}
公共静态无效打印(字符串消息、对象…参数){
***//这是问题所在***
setTextArea(String.format(msg,args));
}
专用静态字符串修剪(字符串s,整型宽度){
如果(s.长度()>宽度)
返回s.substring(0,宽度-1)+“;
其他的
返回s;
}
}
现在有了@RameshK的正确答案。以面向对象的方式:执行以下操作(使事物非静态):
AssistantGUI gui=new AssistantGUI();
公共静态void main(字符串[]args)引发IOException{
新建LinkedxCTRAR().execute();
}
私有void execute(){
//isTrue(args.length==1,“用法:提供获取url”);
字符串基数=”http://uk.ask.com/web?q=";
String关键字=“鲜花”;
String tail=“&search=&qsrc=0&o=312&l=dir”;
字符串url=base+关键字+尾部;
打印(“正在提取%s…”,url);
Document doc=Jsoup.connect(url.get();
Elements links=doc.select(“a[href]”);
打印(“\n链接:(%d)”,links.size());
用于(元素链接:链接){
打印(“*a:(%s)”,link.attr(“abs:href”),修剪(link.text(),35));
}
}
私人空白打印。。。
现在有了@RameshK的正确答案。以面向对象的方式:执行以下操作(使事物非静态):
AssistantGUI gui=new AssistantGUI();
公共静态void main(字符串[]args)引发IOException{
新建LinkedxCTRAR().execute();
}
私有void execute(){
//isTrue(args.length==1,“用法:提供获取url”);
字符串基数=”http://uk.ask.com/web?q=";
String关键字=“鲜花”;
String tail=“&search=&qsrc=0&o=312&l=dir”;
字符串url=base+关键字+尾部;
印刷品(
AssistantGUI gui = new AssistantGUI();
public static void main(String[] args) throws IOException {
new LinkExctractor().execute();
}
private void execute() {
//Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String base = "http://uk.ask.com/web?q=";
String keyword ="flowers";
String tail = "&search=&qsrc=0&o=312&l=dir";
String url = base + keyword + tail;
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
}
}
private void print...