2012-11-17 13 views
5

Ich bekomme diese seltsame Ausnahme nur auf 64 Bit (Windows 7 Ultimate), nicht bei 32 Bit Win7 Ultimate. Zur Zeit sein Lauf auf Java-Version 1.6.0_26Java-Server funktioniert in 32-Bit, aber nicht in 64-Bit. Warum?

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) 

Hier ist der Code:

//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(); 

    } 
} 
} 

Der Fehler in Zeile auf dieses Bit an den Punkten verwiesen:

Socket newsock = sock.accept(); 
+0

möglich Duplikat [Was „IO Fehler java.net.SocketException verursachen können: Wählen Sie fehlgeschlagen "?]" (http://stackoverflow.com/questions/11926655/what-can-cause-io-error-java-net-socketexception-select-failed) – assylias

+0

Die Frage wurde nie zufriedenstellend beantwortet. Es war kein Firewall Problem oder Admin-Privilegien Problem – iForgotMyLogin

+0

Ich bin neu hier und nicht bewusst sein Können, aber ich nehme an, diese Tatsache sollte Hoffnungslosigkeit vermitteln – iForgotMyLogin

Antwort

0

Diese Probleme passieren können , wenn JVM und OS nicht übereinstimmen. Eine läuft 32 Bit und die andere läuft 64 Bit.

+1

Im Allgemeinen sollten Sie in der Lage sein, jedes Java-Programm mit einer 32-Bit-JRE auszuführen, die auf einem 64-Bit-Betriebssystem ausgeführt wird. Und im Allgemeinen sollten Sie nicht einmal in der Lage sein, eine 64-Bit-JVM auf einem 32-Bit-Betriebssystem zu starten (sie sollte lange vor dem Auftreten eines Netzwerkfehlers ausfallen). Aber ja, ich würde auf jeden Fall eine 64-Bit-JRE auf einem 64-Bit-Betriebssystem ausführen. – paulsm4

+0

@ paulsm4 Danke für diese Klarstellung. –

+0

Zur Zeit läuft es auf Java-Version 1.6.0_26 Ich werde einige andere versuchen – iForgotMyLogin

1

Sie könnten definitiv ein Problem mit Windows 7 und der Version von Java SDK haben, die Sie installiert haben. Laden Sie die neueste Version von Java SDK 7 von der Oracle-Website herunter, und installieren Sie sie. Sehen Sie, ob das hilft.

0

Ich mache nicht glaube, das Problem ist Java 32-Bit im Vergleich zu 64-Bit.

Das Problem könnte sein Windows 32-Bit und Windows-64-Bit, aber:

AUCH:

1) Bitte versuchen Sie es mit dieser JVM läuft Option:

  • -D java.net.preferIPv4Stack = true

2) Bitte stellen Sie sicher, dass Sie die 64-Bit- Java-Version installiert haben

+0

Das war ein altes Konto, für das ich das Passwort verloren habe. Ich habe noch nie jemanden gesehen, der das schon lösen konnte (oder das gleiche Problem hat). Eine Sache, die ich vorher versucht hatte, war, die Version von Java auf eine andere herunterzustufen. Es hatte das gleiche Problem – iForgotMyLogin

Verwandte Themen