[英]cannot find symbol: java.net.Socket
在处理较大的项目时,使用java.net.Socket的几行代码未能编译。 在Mac OS X 10.5 Update 4上带有Java的Mac 10.5.8上( java version "1.5.0_20"
)。 其他东西(awt,ssl工厂,胎面等)仍然可以编译并运行。 我将有问题的代码放入了一个小类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
编译,它将从jar文件加载Socket.class,但随后报告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
奇怪的是,它在Fake
类中寻找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);
它应该是:
so = new Socket(...)
so = Socket("www.yahoo.com", 80);
乐于
so = new Socket("www.yahoo.com", 80);
此致Jan
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.