Tôi có một số ứng dụng Java được cài đặt trên Ubuntu64 9.04 PC và không ai trong số họ có thể phân giải tên miền (có nhiều JRE - một số trong số đó là các sản phẩm của IBM). Nếu tôi đặt tên miền trong tệp máy chủ với địa chỉ IP được liên kết, thì các ứng dụng Java chỉ hoạt động cho các miền đó. Mọi chương trình không phải Java khác - như ping, firefox, v.v. - hoạt động tốt với độ phân giải miền. Tôi đã cố gắng để vô hiệu hóa bộ nhớ đệm DNS trong tệp java.security - cho tất cả các JRE của tôi - nhưng điều đó cũng không hoạt động. Tôi sẽ đánh giá cao một số trợ giúp trong việc tìm ra điều này. Cảm ơn!Độ phân giải tên miền không hoạt động trong Java Ứng dụng trên máy Ubuntu64 9.04. Tất cả các phần mềm khác phân giải DNS chính xác
UPDATE: Tôi chắc chắn có không phải là một máy chủ proxy trong nhà hoặc văn phòng của tôi. - Tôi đánh giá cao các bạn giúp tôi ở đây. Tôi thực sự muốn sử dụng Linux thay vì cửa sổ bây giờ mà tôi đang làm phát triển Java một lần nữa.
[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: tôi đã viết chương trình java này trong 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();
}
}
Đầu ra là:
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)
Từ dòng lệnh: (kết quả tương tự)
[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]:~$
Lỗi là gì? Bạn đang thực hiện truy vấn DNS rõ ràng hay chỉ cố gắng tạo kết nối với máy theo tên? Tôi nghĩ rằng vấn đề của bạn phải là môi trường hoặc chương trình cụ thể bởi vì tôi không có vấn đề như vậy trên Ubuntu 9,04 64-bit. –
Tôi có Nhà phát triển ứng dụng Rational của IBM và Nhà phát triển Oracle SQL được tải. Cả hai đều sử dụng một JVM khác. Tuy nhiên, cả hai sẽ không phân giải tên DNS. Trong RAD, về cơ bản là Eclipse, bạn sử dụng URL để cập nhật sản phẩm từ web. Không ai trong số họ giải quyết. Đồng thời, mặc dù tôi có thể đặt URL trong Firefox và trang web hiện lên ngay! Trong nhà phát triển oracle SQL, tôi có cùng một vấn đề. Có một máy chủ trên mạng của chúng tôi với Oracle DB chạy trên nó. Tôi có thể ping tên miền chỉ tốt từ dòng lệnh. Tuy nhiên, tôi chỉ có thể kết nối với cơ sở dữ liệu đó thông qua địa chỉ IP. CHỨNG ĐIÊN CUỒNG! –
Bạn đã thử sử dụng InetAddress.getByName chưa? Bạn có thiết lập proxy trong Firefox không? Bạn có thể truy xuất các trang từ máy chủ bằng wget hoặc curl không? –