Sin red en aplicaciones Java [Solucionado]
Pues bien... después de estar 3 días intentando arreglar mi problema con java, me doy por vencido y abro un hilo por si alguien encuentra o tiene alguna luz al respecto.
EL problema a grandes rasgos es que ninguna aplicación de java tiene red. Simple y llanamente eso, ni los applets, ni las aplicaciones "made in home", ni mi sqldeveloper, ni el netbeans (para actualizar).
He tratado de ver las actualizaciones del domingo hacia aca y aunque ya hice un downgrade de las que encontré sospechosas (java-common, libcommons-net2-java) sigo en las mismas.
Me he descargado dos versiones desde la página de SUN y ni con ellas. Y lo que me di cuenta de hoy es que ni los applets me funcionan, el error en cualquier caso (palabras mas, palabras menos segun los extras de cada aplicativo) es:
....
Caused by: java.net.ConnectException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at sun.net.NetworkClient.doConnect(NetworkClient.java:161)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Applet2ClassLoader.java:458)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Applet2ClassLoader.java:46)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Applet2ClassLoader.java:126)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:123)
... 6 moreEs claro que tengo acceso a la red y no existe ningún firewall o router bloqueandome (esto es mas que seguro porque si enmascaro alguna otra maquina desde la mía accede sin inconvenientes, inclusive una maquina virtual en modo NAT funciona).
Ya revisé las configuraciones de mis interfaces (debido a algún hilo que encontré en SUN, cuya dirección no recuerdo), baje mi firewall, tire mis rutas... y las aplicaciones java siguen sin andar.
Las versiones con las que he probado son (lo cual me muestra que es obvio que no es a jvm):
- sun-java5-sdk 1.5.0-20-1
- sun-java6-sdk 6-17-1
- openjdk-6-jdk 6b16-1.6.1-2
- jdk1.6.0_17 (Directa desde SUN)
- jdk1.5.0_22 (Directa desde SUN)
Mi sistema:
Kernel: 2.6.31-1-686-bigmem
Version: sid/experimental (con cosas de squeeze)
De antemano muchas gracias!
Saludos!
- Inicie sesión o regístrese para enviar comentarios
- 2183 lecturas


Yo diría que el problema puede venir por las Java Policies (creo que buscando en google "Java Policy" encontrarás un poco de documentación que te aclare si te sirve de algo o no la pista).
Si no recuerdo mal, creo que con estas políticas se podía definir con granularidad bastante fina el tipo de interacciones que estaban permitidas o vetadas entre las aplicaciones Java y el sistema operativo que ejecuta la máquina virtual, entre otras cosas. Temas como escritura/lectura de disco, uso de sockets, etc.
Saludos
Si lo llegue a pensar en su momento, sin embargo cuando no tienes permisos debido a las políticas manda alguna excepción relacionada hacia dicha "falta".
De todas formas ya lo he revisado y los permisos si existen. Inclusive modifique el /etc/java-*-sun/net.properties y obligue a que tome el proxy del sistema (del cual carezco cabe mencionar) y sigue sin funcionar.
Gracias Max!
Saludos!
PD.- Eso me pasa por no buscar adecuadamente... una jodida actualización de sistema:
BUG!!
Pido una enorme disculpa por abir un hilo que podía ser resuelto buscando mas apropiadamente.
Todo parece ser un "problema" con el paquete netbase que activa por default el comportamiento para uso exclusivo de direcciones IPV6 a los sockets IPv6. Esto provocaba que el programa tuviera que abrir dos sockets uno para IPv4 y otro para IPv6. Para solucionar esto hay dos opciones:
1) Agregar el siguiente parámetro a todo aquello que invoque el java: -Djava.net.preferIPv4Stack=true
2) Poner a 0 el valor de net.ipv6.bindv6only en el archivo /etc/sysctl.d/bindv6only.conf
Si ademas se quiere que el cambio sea en inmediato basta con hacer un echo 0 > /proc/sys/net/ipv6/bindv6only
Esta es la fuente original.
De antemano muchas gracias a Max y a todos los que se tomaron la molestia de leer este absurdo hilo que tenía solución buscando en lo más sencillo.
Saludos!