2012-11-17 14 views
5

Dostaję ten dziwny wyjątek tylko podczas uruchamiania na 64-bitowym (Windows 7 ultimate) Nie, gdy uruchamiany jest 32-bitowy system win7. Obecnie pracuje na jego wersji java 1.6.0_26Serwer Java działa w trybie 32-bitowym, ale nie w wersji 64-bitowej. Czemu?

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) 

Oto kod:

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

    } 
} 
} 

Błąd odniesienia na linii w punktach do tego bitu:

Socket newsock = sock.accept(); 
+0

możliwe duplikat [Co może spowodować „io błędzie java.net.SocketException: wybór nie powiodło się "?" (http://stackoverflow.com/questions/11926655/what-can-cause-io-error-java-net-socketexception-select-failed) – assylias

+0

Na to pytanie nigdy nie udzielono satysfakcjonującej odpowiedzi. To nie był problem z zaporą ani z przywilejami administratora. – iForgotMyLogin

+0

Jestem tu nowy i nie jestem świadomy jego sprawności, ale zakładam, że ten fakt powinien oznaczać beznadzieję. – iForgotMyLogin

Odpowiedz

0

Te problemy mogą się zdarzyć , gdy występuje niedopasowanie między JVM i OS. Jeden z 32-bitowych i drugi 64-bitowy.

+1

Ogólnie, powinieneś być w stanie uruchomić dowolny program Java z 32-bitowym środowiskiem JRE działającym w 64-bitowym systemie operacyjnym. Generalnie nie powinieneś nawet być w stanie * START * 64-bitowej maszyny JVM w 32-bitowym systemie operacyjnym (powinna umrzeć na długo przed pojawieniem się błędu sieciowego). Ale tak, zdecydowanie zachęciłbym do uruchomienia 64-bitowego środowiska JRE w 64-bitowym systemie operacyjnym. – paulsm4

+0

@ paulsm4 Dzięki za wyjaśnienia. –

+0

Obecnie działa na java wersja 1.6.0_26 Spróbuję kilka innych – iForgotMyLogin

1

Z pewnością mógłbyś mieć problem z Windows 7 i wersją Java SDK, którą zainstalowałeś. Pobierz i zainstaluj najnowszą wersję Java SDK 7 ze strony internetowej Oracle. Sprawdź, czy to pomaga.

0

Mam nie uważam, że problem jest Java 32-bitowy vs 64-bitowy.

Problem mógłby być Windows 32-bit vs 64-bitowy system Windows, jednak:

TAKŻE:

1) Proszę spróbować uruchomić z tego JVM opcja:

  • -D java.net.preferIPv4Stack = true

2) Upewnij się, że masz zainstalowaną wersję Javy 64-bitowy

+0

To było stare konto, dla którego utraciłem hasło. Nigdy nie widziałem, aby ktokolwiek mógł to rozwiązać (lub mieć ten sam problem). Jedną z rzeczy, których wcześniej próbowałem, była zamiana wersji java na inną. Miał ten sam problem – iForgotMyLogin

Powiązane problemy