Ich habe eine Reihe von Java-Anwendungen auf einem Ubuntu64 9.04 PC installiert, und keiner von ihnen kann Domänennamen auflösen (es gibt mehrere JRE auch - einige von ihnen sind IBM-Produkte). Wenn ich den Domänennamen in die hosts-Datei mit der zugehörigen IP-Adresse einfüge, funktionieren die Java-Apps nur für diese Domänen. Jedes andere nicht-Java-Programm - wie Ping, Firefox, etc - funktioniert gut mit Domain-Auflösung. Ich habe versucht, DNS-Caching in der Datei java.security zu deaktivieren - für alle meine JREs - aber das hat auch nicht funktioniert. Ich würde mich freuen, wenn ich Ihnen helfen könnte. Vielen Dank!Domain Name Auflösung funktioniert nicht in Java Anwendungen auf Ubuntu64 9.04 Maschine. Alle anderen Software löst DNS korrekt
UPDATE: Ich bin sicher, dass es nicht ein Proxy-Server in meinem Hause oder im Büro ist. - Ich weiß es zu schätzen, dass ihr mir hier hilft. Ich möchte wirklich Linux anstelle von Windows verwenden, jetzt wo ich Java-Entwicklung wieder mache.
[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
UPDATE: ich dieses Java-Programm in RAD schrieb:
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();
}
}
Die Ausgabe lautet:
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)
in der Befehlszeile: (gleiches Ergebnis)
[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]:~$
Was ist der Fehler? Machst du eine explizite DNS-Abfrage oder versuchst du einfach eine Verbindung zu einer Maschine herzustellen? Ich denke, dein Problem muss umwelt- oder programmspezifisch sein, da ich auf 64-bit Ubuntu 9.04 kein Problem habe. –
Ich habe IBM Rational Application Developer und Oracle SQL Developer geladen. Beide verwenden eine andere JVM. Beide lösen jedoch keine DNS-Namen auf. In RAD, das im Grunde Eclipse ist, verwenden Sie URLs, um das Produkt aus dem Web zu aktualisieren. Keiner von ihnen löst. Zur gleichen Zeit kann ich die URL in Firefox setzen und die Webseite erscheint sofort! In Oracle SQL-Entwickler habe ich das gleiche Problem. Es gibt einen Server in unserem Netzwerk, auf dem Oracle DB läuft. Ich kann den Domain-Namen einfach über die Befehlszeile pingen. Ich kann jedoch nur über die IP-Adresse eine Verbindung zu dieser Datenbank herstellen. WAHNSINN! –
Haben Sie versucht, InetAddress.getByName zu verwenden? Hast du einen Proxy in Firefox eingerichtet? Können Sie Seiten mit wget oder curl vom Server abrufen? –