2009-10-22 10 views
15

मेरे पास Ubuntu64 9.04 पीसी पर कई जावा एप्लिकेशन इंस्टॉल हैं, और उनमें से कोई भी डोमेन नामों को हल नहीं कर सकता है (इसमें कई जेआरई भी हैं - उनमें से कुछ आईबीएम उत्पाद हैं)। यदि मैं मेजबान फ़ाइल में डोमेन नाम को उसके संबंधित आईपी पते के साथ डालता हूं, तो जावा ऐप्स केवल उन डोमेन के लिए काम करता है। अन्य सभी गैर जावा प्रोग्राम - जैसे पिंग, फ़ायरफ़ॉक्स, आदि - डोमेन रिज़ॉल्यूशन के साथ बस ठीक काम करते हैं। मैंने java.security फ़ाइल में DNS कैशिंग को अक्षम करने का प्रयास किया है - मेरे सभी जेआरई के लिए - लेकिन यह भी काम नहीं करता है। मैं इसे समझने में कुछ मदद की सराहना करता हूं। धन्यवाद!डोमेन नाम संकल्प Ubuntu64 9.04 मशीन पर जावा अनुप्रयोगों में काम नहीं कर रहा है। अन्य सभी सॉफ़्टवेयर DNS को सही ढंग से हल करते हैं


अद्यतन: मुझे यकीन है कि मेरे घर या कार्यालय में एक प्रॉक्सी सर्वर नहीं है हूँ। - मैं आपको यहां मेरी मदद करने वाले लोगों की सराहना करता हूं। मैं वास्तव में विंडोज़ के बजाय लिनक्स का उपयोग करना चाहता हूं कि मैं फिर से जावा विकास कर रहा हूं।

[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 

अद्यतन: मैं रेड में इस जावा कार्यक्रम ने लिखा है:

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

} 

उत्पादन होता है:

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) 

कमांड लाइन से: (एक ही परिणाम)

[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]:~$ 
+0

त्रुटि क्या है? क्या आप एक स्पष्ट DNS क्वेरी बना रहे हैं या बस मशीन से कनेक्शन बनाने का प्रयास कर रहे हैं? मुझे लगता है कि आपकी समस्या पर्यावरण या प्रोग्राम-विशिष्ट होना चाहिए क्योंकि मुझे 64-बिट उबंटू 9.04 पर ऐसी कोई समस्या नहीं है। –

+0

मेरे पास आईबीएम तर्कसंगत अनुप्रयोग डेवलपर है, और ओरेकल एसक्यूएल डेवलपर लोड किया गया है। दोनों एक अलग जेवीएम का उपयोग करें। हालांकि, उनमें से दोनों DNS नामों का समाधान नहीं करेंगे। आरएडी में, जो मूल रूप से ग्रहण है, आप वेब से उत्पाद को अपडेट करने के लिए यूआरएल का उपयोग करते हैं। उनमें से कोई भी हल नहीं करता है। उसी समय, मैं यूआरएल को फ़ायरफ़ॉक्स में डाल सकता हूं और वेबसाइट सही हो जाती है! ओरेकल एसक्यूएल डेवलपर में, मुझे एक ही समस्या है। ओरेकल डीबी के साथ हमारे नेटवर्क पर एक सर्वर चल रहा है। मैं कमांड लाइन से डोमेन नाम को ठीक कर सकता हूं। हालांकि, मैं केवल आईपी पते के माध्यम से उस डेटाबेस से कनेक्ट कर सकता हूं। पागलपन! –

+1

क्या आपने InetAddress.getByName का उपयोग करने का प्रयास किया है? क्या आपके पास फ़ायरफ़ॉक्स में प्रॉक्सी सेट अप है? क्या आप wget या curl का उपयोग कर सर्वर से पृष्ठों को पुनर्प्राप्त कर सकते हैं? –

उत्तर

24

एक बार फिर, यहां लोगों के मार्गदर्शन के लिए धन्यवाद, मुझे एक जवाब मिला है। ऊपर जावा प्रोग्राम काम करता है जब मैं निम्न कार्य करें:

java -Djava.net.preferIPv4Stack=true DomainResolutionTest 

विवरण:

[email protected]:~$ java -Djava.net.preferIPv4Stack=true DomainResolutionTest 
www.google.com/209.85.225.106 
[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) 

यह पता चला है कि वहाँ आईपीवी 6 ढेर में एक बग है कि। वहाँ पदों है कि मुझे इस निष्कर्ष करने के लिए नेतृत्व के एक जोड़े हैं:

http://uclue.com/?xq=2127

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477211

https://answers.launchpad.net/ubuntu/+question/23024

मुझे यकीन है कि आशा है कि मैं हर बार जब मैं चलाने में आईपीवी 4 बकवास जोड़ने की जरूरत नहीं है एक जावा ऐप। अंतिम समाधान दूसरे लिंक में हो सकता है - एक लापता पैकेज। हम देखेंगे।

डेबियन बग रिपोर्ट लॉग - # 477,211 ia32-धूप में Java6-बिन: lib32nss-mDNS पर निर्भर रहना ... डोमेन नाम का समाधान नहीं कर सकता है। को सिस्टम के बाकी हिस्सों पर ठीक करें, अन्य जेडीके के साथ परीक्षण नहीं किया गया है। पैकेज से स्थापित और अद्यतन-जावा-विकल्प के साथ सेट करें।

DNS सिस्टम पर अन्य सभी चीज़ों के लिए काम करता है। डेबियन 2.6.23-AMD64 पर चल रहा है। लेनी पैकेज और सिड पैकेज दोनों की कोशिश की है। के रूप में काम करता है जो सूरज-जावा 6-बिन के साथ अपेक्षित है, में ia32-sun-java6-bin के साथ विफल रहता है। ARG। ... यदि आपने स्ट्रेस के साथ जावा मारा है तो आप देखेंगे कि यह libnss_mdns4_minimal.so.2 का उपयोग करने का प्रयास कर रहा है, जो पैकेज lib32nss-mdns में उपलब्ध है। बग को ठीक करने के लिए आपको निर्भरता जोड़नी चाहिए।

सूर्य-जावा 6-बिन - libnss-mdns के लिए भी यही बात होती है।

पैकेज वास्तव में मेरी मशीन पर याद आ रही है:

[email protected]:~$ dpkg -L lib32nss-mdns 
Package `lib32nss-mdns' is not installed. 
Use dpkg --info (= dpkg-deb --info) to examine archive files, 
and dpkg --contents (= dpkg-deb --contents) to list their contents. 

किसी भी तरह से, मुझे आशा है कि इस पोस्ट, किसी और में मदद करता है, क्योंकि यह पता लगाने की एक प्रमुख PITA था।

+1

इस लिनक्स डिस्ट्रो को अपग्रेड करने के बाद इस सप्ताह इस समस्या में भाग लें- धन्यवाद यह काम करता है। पूरी जगह पर देखा। –

+0

इस निष्कर्ष पर क्या कारण है कि यह एक आईपीवी 6 बग है? यह जावा में एक बग की तरह लगता है। –

+0

मैंने इसे और अन्य समान लेख पढ़े थे - https://bugs.launchpad.net/ubuntu/+bug/220314 मुझे लगता है कि मुझे अभी भी वास्तव में यकीन नहीं है कि समस्या कहां है या थी। मैं बस इसे ठीक करना चाहता था। :) –

2

यह समाधान (-Djava.net.preferIPv4Stack=true) भी काम करता है जब lookupAllHostAddr लंबे समय तक चल रहा है।

+0

लटकने के रूप में "लंबे समय तक चल रहा है"? फिर आपने यह JVM बग मारा होगा: http://bugs.sun.com/view_bug.do?bug_id=7012768 –

+0

बग यूआरएल http://bugs.java.com/view_bug.do?bug_id=7012768 पर ले जाया गया है – ppeterka

संबंधित मुद्दे