2012-11-17 15 views
5

Ricevo questa strana eccezione solo quando si esegue su 64 bit (Windows 7 Ultimate) Non quando si esegue 32 bit win7 ultimate. Attualmente la sua esecuzione su Java versione 1.6.0_26Il server Java funziona a 32 bit, ma non a 64 bit. Perché?

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) 

Ecco il codice:

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

    } 
} 
} 

L'errore fa riferimento on line presso i punti di questo bit:

Socket newsock = sock.accept(); 
+0

possibile duplicato del [Che cosa può causare “IO errore java.net.SocketException: selezionare fallito "?] (http://stackoverflow.com/questions/11926655/what-can-cause-io-error-java-net-socketexception-select-failed) – assylias

+0

La domanda non ha mai risposto in modo soddisfacente. Non era un problema di firewall o un problema di privilegi di amministratore – iForgotMyLogin

+0

Sono nuovo qui e ignaro della sua abilità, ma presumo che questo fatto dovrebbe trasmettere disperazione – iForgotMyLogin

risposta

0

Questi problemi possono accadere , quando c'è una discrepanza tra JVM e OS. Uno in esecuzione a 32 bit e l'altro in esecuzione a 64 bit.

+1

In generale, dovresti essere in grado di eseguire qualsiasi programma Java con un JRE a 32 bit in esecuzione su un sistema operativo a 64 bit. E in generale, non si dovrebbe nemmeno essere in grado di * AVVIARE * una JVM a 64 bit su un sistema operativo a 32 bit (dovrebbe morire molto prima che si verifichi un errore di rete). Ma sì, vorrei sicuramente incoraggiare l'esecuzione di un JRE a 64 bit su un sistema operativo a 64 bit. – paulsm4

+0

@ paulsm4 Grazie per questo chiarimento. –

+0

Attualmente è in esecuzione su java versione 1.6.0_26 Proverò alcuni altri – iForgotMyLogin

1

Si potrebbe sicuramente avere un problema con Windows 7 e la versione di Java SDK che hai installato. Scarica e installa l'ultima versione di Java SDK 7 dal sito Web di Oracle. Vedi se questo aiuta.

0

I do non credere che il problema sia Java a 32 bit contro 64 bit.

Il problema potrebbe essere Windows a 32-bit vs Windows a 64 bit, tuttavia:

ANCHE:

1) Si prega di provare a eseguire con questo JVM opzione:

  • -D java.net.preferIPv4Stack = true

2) Si prega di assicurarsi di aver installato la versione a 64 bit di Java

+0

Quello era un vecchio account per il quale ho perso la password. Non ho mai visto nessuno in grado di risolvere questo problema (o avere lo stesso problema). Una cosa che avevo provato prima era il downgrade della versione di java a un'altra. Aveva lo stesso problema – iForgotMyLogin