Tengo una serie de aplicaciones Java instaladas en una PC Ubuntu64 9.04, y ninguna de ellas puede resolver nombres de dominio (también hay varias JRE, algunas de ellas son productos de IBM). Si pongo el nombre de dominio en el archivo de hosts con su dirección IP asociada, entonces las aplicaciones Java solo funcionan para esos dominios. Todos los demás programas que no son Java, como ping, firefox, etc., funcionan bien con la resolución de dominio. Intenté desactivar el almacenamiento en caché de DNS en el archivo java.security, para todos mis JRE, pero tampoco funcionó. Agradecería ayuda para descifrar esto. ¡Gracias!La resolución de nombres de dominio no funciona en aplicaciones Java en la máquina Ubuntu64 9.04. El resto del software resuelve el DNS correctamente
ACTUALIZACIÓN: Estoy seguro de que no es un servidor proxy en mi casa u oficina. - Les agradezco que me hayan ayudado aquí. REALMENTE deseo usar Linux en lugar de Windows ahora que estoy haciendo el desarrollo de Java nuevamente.
[email protected]:~$ cat /etc/resolv.conf
# Generated by NetworkManager
domain hsd1.in.comcast.net.
search hsd1.in.comcast.net.
nameserver 192.168.0.1
[email protected]:~$ env | grep -i proxy
[email protected]:~$ dig google.com
; <<>> DiG 9.5.1-P2 <<>> google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56845
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 58 IN A 74.125.53.100
google.com. 58 IN A 74.125.45.100
google.com. 58 IN A 74.125.67.100
;; Query time: 35 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Oct 22 13:37:26 2009
;; MSG SIZE rcvd: 76
ACTUALIZACIÓN: escribí este programa Java en RAD:
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.PrintWriter;
import java.io.StringWriter;
public class DomainResolutionTest {
public static void main(String[] args) {
if (args.length == 0) args = new String[] { "www.google.com" };
try {
InetAddress ip = InetAddress.getByName(args[0]);
System.out.println(ip.toString());
}catch (UnknownHostException uhx) {
System.out.println("ERROR: " + uhx.getMessage() + "\n" + getStackTrace(uhx));
Throwable cause = uhx.getCause();
if (cause != null) System.out.println("CAUSE: " + cause.getMessage());
}
}
public static String getStackTrace(Throwable t)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
t.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
}
}
La salida es:
ERROR: www.google.com
java.net.UnknownHostException: www.google.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:862)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1213)
at java.net.InetAddress.getAllByName0(InetAddress.java:1166)
at java.net.InetAddress.getAllByName(InetAddress.java:1096)
at java.net.InetAddress.getAllByName(InetAddress.java:1032)
at java.net.InetAddress.getByName(InetAddress.java:982)
at DomainResolutionTest.main(DomainResolutionTest.java:12)
Desde la línea de comandos: (mismo resultado)
[email protected]:~$ javac DomainResolutionTest.java
[email protected]:~$ java DomainResolutionTest
ERROR: www.google.com
java.net.UnknownHostException: www.google.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1200)
at java.net.InetAddress.getAllByName0(InetAddress.java:1153)
at java.net.InetAddress.getAllByName(InetAddress.java:1083)
at java.net.InetAddress.getAllByName(InetAddress.java:1019)
at java.net.InetAddress.getByName(InetAddress.java:969)
at DomainResolutionTest.main(DomainResolutionTest.java:12)
[email protected]:~$ java -version
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)
[email protected]:~$
¿Cuál es el error? ¿Estás haciendo una consulta DNS explícita o simplemente tratando de hacer una conexión a una máquina por su nombre? Creo que su problema debe ser ambiental o específico del programa porque no tengo ese problema en Ubuntu 9.04 de 64 bits. –
Tengo IBM Rational Application Developer y Oracle SQL Developer cargado. Ambos usan una JVM diferente. Sin embargo, ninguno de los dos resolverá nombres DNS. En RAD, que es básicamente Eclipse, usa URL para actualizar el producto desde la web. Ninguno de ellos resuelve. ¡Al mismo tiempo, sin embargo, puedo poner la URL en Firefox y el sitio web aparece al instante! En el desarrollador de Oracle Oracle, tengo el mismo problema. Hay un servidor en nuestra red con Oracle DB ejecutándose en él. Puedo hacer ping al nombre de dominio desde la línea de comando. Sin embargo, solo puedo conectarme a esa base de datos a través de la dirección IP. ¡LOCURA! –
¿Ha intentado usar InetAddress.getByName? ¿Tienes un proxy configurado en Firefox? ¿Puedes recuperar páginas del servidor usando wget o curl? –