не могу найти символ: java.net.Socket - PullRequest
0 голосов
/ 12 сентября 2009

При работе над большим проектом несколько строк кода с использованием java.net.Socket не скомпилировались. Это на Mac 10.5.8 с Java для Mac OS X 10.5, обновление 4 (java version "1.5.0_20"). Другие вещи (awt, ssl factory, treads и т. Д.) Все еще компилируются и работают Я вытащил нарушающий код в небольшой класс Fake.java:

import java.net.Socket;
public class Fake {
  public String sendMsg() {
    Socket so;
    try {      
      so = Socket("www.yahoo.com", 80);
    } catch (Exception e) {
    } finally {
    }
    return "";      
  }
}

Если я скомпилирую это с javac -verbose Fake.java, он загружает класс Socket.class из файла jar, но затем сообщает Fake.java:6: cannot find symbol. Все пути к классам кажутся правильными, поэтому я не уверен, в чем проблема. Полный вывод компиляции:

$ javac -verbose Fake.java 
[parsing started Fake.java]
[parsing completed 41ms]
[search path for source files: [.]]
[search path for class files: [/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar, /Users/shamma/Library/Java/Extensions/js.jar, /System/Library/Java/Extensions/AppleScriptEngine.jar, /System/Library/Java/Extensions/CoreAudio.jar, /System/Library/Java/Extensions/dns_sd.jar, /System/Library/Java/Extensions/j3daudio.jar, /System/Library/Java/Extensions/j3dcore.jar, /System/Library/Java/Extensions/j3dutils.jar, /System/Library/Java/Extensions/jai_codec.jar, /System/Library/Java/Extensions/jai_core.jar, /System/Library/Java/Extensions/mlibwrapper_jai.jar, /System/Library/Java/Extensions/MRJToolkit.jar, /System/Library/Java/Extensions/QTJava.zip, /System/Library/Java/Extensions/vecmath.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/apple_provider.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/dnsns.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/localedata.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunjce_provider.jar, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunpkcs11.jar, .]]
[loading /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar(java/net/Socket.class)]
[loading /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar(java/lang/Object.class)]
[loading /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar(java/lang/String.class)]
[checking Fake]
Fake.java:6: cannot find symbol
symbol  : method Socket(java.lang.String,int)
location: class Fake
      so = Socket("www.yahoo.com", 80);
           ^
[loading /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar(java/lang/Exception.class)]
[loading /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar(java/lang/Throwable.class)]
[total 282ms]
1 error

Как ни странно, он ищет метод Socket() в классе Fake. Если я отредактирую строку 6 для:

so = java.net.Socket("www.yahoo.com", 80);

Ошибка становится:

Fake.java:6: cannot find symbol
symbol  : class net
location: package java
      so = java.net.Socket("www.yahoo.com", 80);
               ^
1 error

Ответы [ 3 ]

4 голосов
/ 12 сентября 2009

Это полный выстрел в темноте, но вы должны иметь новое ключевое слово перед типом?

so = Socket("www.yahoo.com", 80);

должно быть

so = new Socket("www.yahoo.com", 80);
1 голос
/ 12 сентября 2009
so = Socket("www.yahoo.com", 80);

должно быть

so = new Socket("www.yahoo.com", 80);

С уважением, Ян

1 голос
/ 12 сентября 2009

Должно быть:

so = new Socket(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...