找不到符号:java.net.Socket

找不到符号:java.net.Socket,java,macos,Java,Macos,在处理更大的项目时,使用java.net.Socket的几行代码未能编译。这是在Mac 10.5.8上,带有Java for Mac OS X 10.5更新4(Java版本“1.5.0\u 20”)。其他东西(awt、ssl工厂、踏板等)仍在编译和运行。我把有问题的代码拉到一个小类中false.java: import java.net.Socket; public class Fake { public String sendMsg() { Socket so; try {

在处理更大的项目时,使用java.net.Socket的几行代码未能编译。这是在Mac 10.5.8上,带有Java for Mac OS X 10.5更新4(
Java版本“1.5.0\u 20”
)。其他东西(awt、ssl工厂、踏板等)仍在编译和运行。我把有问题的代码拉到一个小类中
false.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
编译它,它将从jar文件加载Socket.class,但随后报告
Fake.java:6:找不到符号
。类路径似乎都是正确的,所以我不确定什么是令人不快的问题。完整的编译输出是:

$ 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
奇怪的是,它在
false
类中查找
Socket()
方法。如果我将第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

这完全是瞎猜,但是你应该在输入之前加上new关键字吗

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

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

这完全是瞎猜,但是你应该在输入之前加上new关键字吗

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

so = new Socket("www.yahoo.com", 80);
应该是:

so = new Socket(...)
应该是:

so = new Socket(...)
应该是

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

应该是

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

你好,Jan

等等,你是说他没有试图调用命名空间
java
中类
net
中的方法
Socket
?当然,这个类是不存在的……哦,我试图把它静态地称为工厂。等等,你是说他没有试图调用命名空间
java
中类
net
中的方法
Socket
?当然,那个类是不存在的……哦,我试着把它静态地称为工厂。