Java服务器工作在32位,但不是64位。为什么?

时间:2012-11-17 23:13:55

标签: java sockets 64-bit serversocket java-server

我在64位运行时遇到这个奇怪的异常(Windows 7终极版)不是在运行32位win7终极时。目前它在java版本1.6.0_26上运行

running server!
java.net.SocketException: select failed
 at java.net.PlainSocketImpl.socketAccept(Native Method)
 at java.net.PlainSocketImpl.accept(Unknown Source)
 at java.net.ServerSocket.implAccept(Unknown Source)
 at java.net.ServerSocket.accept(Unknown Source)
 at Server.main(Server.java:18)

以下是代码:

//import java.net.ServerSocket;
//import java.net.Socket;
import java.io.*;
import java.net.*;




public class Server {


 public static void main(String[] args) {
 System.out.println("running server!");
  int nreq = 1;
  try{
   ServerSocket sock = new ServerSocket(7337);
  for(;;){
   Socket newsock = sock.accept();
   System.out.println("Creating thread...");
   Thread t = new ThreadHandler(newsock, nreq);
   t.start();
   nreq++;
  }
  }

  catch(Exception e)
  {

   e.printStackTrace();

  }
 }
}

指向此位的行上引用的错误:

Socket newsock = sock.accept();

3 个答案:

答案 0 :(得分:1)

您肯定会遇到Windows 7以及已安装的Java SDK版本的问题。从oracle网站下载并安装最新版本的Java SDK 7。看看是否有帮助。

答案 1 :(得分:0)

当JVM和操作系统不匹配时,可能会发生这些问题。一个运行32位,另一个运行64位。

答案 2 :(得分:0)

认为问题是Java 32位与64位。

问题可能是Windows 32位与Windows 64位,但是:

ALSO:

1)请尝试使用此JVM选项运行:

  • -Djava.net.preferIPv4Stack =真

2)请确保您已安装 64位版本的Java