Java 找不到符号错误消息

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:

在编写程序时,当我试图从另一个类调用setTextArea()方法时,得到了“找不到符号消息”。编译程序后,我收到以下错误消息: 不可编译源代码-错误的符号类型:gui.setTextArea

这是我的密码:

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...