url is already defined in main(java.lang.String[])
在同一个方法中定义url两次,当然报错

解决方案 »

  1.   

    不是的,我的意思是如果注释前面的url定义,把后面定义的注释去掉,会出现错误。
      

  2.   

    当然找不到url了,因为你得url定义在try里面阿
      

  3.   

    你把System.out.println()放到try里边,可能就没问题了!
      

  4.   

    加:你报出来的错误应该是:url可能没有new吧?而不是没有定义吧?
      

  5.   

    因为你try块里定义的url作用域是try{.........},外头当然不能访问。
      

  6.   

    可能是我前面没说清楚,上面的那个程序是没有问题的,下面的有问题:
    import java.io.*;
    import java.net.*;
    public class Url1
    {
    public static void main(String args[])
    {
    //URL url=null;
    try
    {
    URL url=null;
    url=new URL("http://www.sohu.com");
    }
    catch (Exception e)
    {
    System.out.println("There is a error!");
    }

    System.out.println("Protocol is:"+url.getProtocol());
    System.out.println("host is:"+url.getHost());
    System.out.println("port is:"+url.getPort());
    }
    }
    提示错误:
    G:\newexample\Url1.java:20: cannot resolve symbol
    symbol  : variable url 
    location: class Url1
    System.out.println("Protocol is:"+url.getProtocol());
                                              ^
    G:\newexample\Url1.java:21: cannot resolve symbol
    symbol  : variable url 
    location: class Url1
    System.out.println("host is:"+url.getHost());
                                          ^
    G:\newexample\Url1.java:22: cannot resolve symbol
    symbol  : variable url 
    location: class Url1
    System.out.println("port is:"+url.getPort());
                                          ^
    3 errors为什么?
      

  7.   

    westwin,你说的因为你try块里定义的url作用域是try{.........},外头当然不能访问。
    是什么原因呢?我在书上没找到啊
      

  8.   

    因为你的url这个对象是在try{}块内定义的,一旦离开该块,它就不可访问。所以系统就报出编译错误告诉你:该标识符无法解析。如果你不想修改输出语句的位置,那就只能将URL url = null;放到try外面来。
      

  9.   

    楼上人们的都说了,没什么可说的了……生存期问题初学者找个好的编译器,能进步的快一点,这种问题被编译器警告两次就知道了明摆着,警告的时候有提示,就不用跑CSDN上来问了。不要听什么用Notepad + jdk的说法,那样的目的就是让你背单词。关键是不能依赖编译器,不能只知道敲ctrl+space,要多动动脑筋想想我刚开始学的时候用得idea
      

  10.   

    完全同意allof01(我行我素)的说法,他的理解我完全认同。就是那样理解的。