2012-03-13 17 views
5

पर जावा से लिखे गए मेरे आवेदन से मैं ऑपरेटिंग सिस्टम फ़ाइल एक्सप्लोरर का उपयोग करके एक फ़ोल्डर खोलना चाहता हूं।जावा से ubuntu (linux)

मैं Desktop.open (नई फ़ाइल (पथ))

यह खिड़कियों पर ठीक काम करता है, लेकिन ubuntu 11.10 (लिनक्स) पर यह काम नहीं करता का उपयोग करें। डेस्कटॉप खोलने के लिए डेस्कटॉप खोलने का काम करता है, दोनों उबंटू और विंडोज़ पर काम करता है।

में जो कदम का उपयोग करना: फ़ाइल fPath = नई फ़ाइल (fPath) और fPath.exists साथ यह परीक्षण() और fPath.isDirectory() दोनों सही देता है।

Desktop.open (नई फ़ाइल (पथ)) का उपयोग कर मुझे इस अपवाद देता है:

java.io.IOException: Failed to show URI:file:/and/here/the/path/I/use/ 
at sun.awt.X11.XDesktopPeer.launch(Unknown Source) 
at sun.awt.X11.XDesktopPeer.open(Unknown Source) 
at java.awt.Desktop.open(Unknown Source) 

मैं एक सेब कंप्यूटर पर अभी तक यह परीक्षण करने में सक्षम नहीं था, लेकिन मैं Desktop.open (नई आशा व्यक्त की फ़ाइल (पथ)) वैसे प्रणाली स्वतंत्र .....

था, पूरा कोड:

Desktop desktop = null; 
    // Before more Desktop API is used, first check 
    // whether the API is supported by this particular 
    // virtual machine (VM) on this particular host. 
    if (!Desktop.isDesktopSupported()) { 
     // show Error 
     return; 
    } 
    desktop = Desktop.getDesktop(); 
    String path = "here the path "; 
    // by the way: I use System.getProperty("file.separator") as file seperator 
    try { 
     File fPath=new File(path); 
     if(!fPath.exists()){ 
      // show Error 
      return; 

     } 
     if(!fPath.isDirectory()){ 
      // show Error 
      return; 

     } 
     desktop.open(new File(path)); 
    } catch (IOException e) { 
     log.severe(e.getMessage()); 
     e.printStackTrace(); 
     // show Error 
     return; 
    } 

कुछ अतिरिक्त जानकारी: ओएस: लिनक्स (3.0.0-16-सामान्य - amd64)

जावा: 1.6.0_30-बी 12

जावा घर: /opt/java/64/jre1.6.0_30

+0

वैसे, अंत में कोड एक बहुत अधिक कॉम्पैक्ट हो सकता है, मैं कई अधिक लाइनों का इस्तेमाल किया डिबग करने के लिए कुछ अतिरिक्त जाँच में निर्माण करने के लिए यह .... Desktop.getDesktop()। खुला (नई फ़ाइल (पथ)); 1 लाइन में चाल करना चाहिए ... इसके चारों ओर पकड़ने की कोशिश करें, चोट नहीं पहुंचेगी। साथ ही Desktop.isDesktopSupported() पकड़ो। –

+0

अभी भी सही समाधान नहीं मिला है, लेकिन ग्राहकों को पीसी को पूरी तरह से जांचने का कोई समय नहीं था .... (उदाहरण के लिए एडोब का कौन सा संस्करण) –

+0

वैसे: मैंने पाया कि मेरे ग्राहकों में से एक को एक ही समस्या है विंडोज पीसी .... –

उत्तर

0

मैं त्रुटि पुष्टि नहीं कर सकते। मैंने आपका कोड लिया और इसके चारों ओर एक मुख्य विधि बनाई, और सबकुछ अपेक्षित काम करता है। मुझे बिल्कुल पता नहीं है कि डिफ़ॉल्ट एप्लिकेशन कहां सेट किए गए हैं (मेरे मामले में सामान्य नॉटिलस की बजाय पीसीमेन खोला गया था, लेकिन इसे अंत में अपना उद्देश्य पूरा करना चाहिए)।

java.awt.Desktop.open doesn’t work with PDF files? पर मुझे an issue in Suns (Oracles) bug tracker पर इंगित एक लिंक मिला है जिसमें कहा गया है कि एडब्ल्यूटी का उपयोग कर फाइलें खोलने की विधि विंडोज पर भी विश्वसनीय नहीं है। शायद आपको ऐसे अनुप्रयोगों को खोलने के वैकल्पिक तरीकों के बारे में सोचना चाहिए। इसके अलावा एडब्ल्यूटी जल्द ही निश्चित रूप से निराश हो रहा है।

यदि आप अपने आवेदन में एसडब्ल्यूटी का उपयोग कर रहे हैं, तो आप org.eclipse.swt.program.Program का उपयोग कर सकते हैं।

+0

ठीक है, कोशिश करने के लिए धन्यवाद, मैं आमतौर पर नॉटिलस का भी उपयोग करता हूं, लेकिन वास्तव में, मुझे वास्तव में परवाह नहीं है कि फ़ाइल एक्सप्लोरर खुलता है, जब तक कोई खुलता है ..... 1 आपको सवाल है, क्योंकि मैंने इसे पोस्ट करने से पहले बहुत कुछ पढ़ा है, और मैं 64 बिट डेस्कटॉप बग के साथ आया .... और मेरे पास 64 बिट लैपटॉप है। क्या आप 32 या 64 बिट पीसी का उपयोग करते हैं? –

+0

संपादन देखें। मैं 32 बिट पर हूं। अतिरिक्त जानकारी के लिए – phineas

+0

Thanx, मैंने अपना प्रश्न संपादित किया, फाइलें खोलना कोई समस्या नहीं है, बस उबंटू पर पथ खोल रहा है। मुझे बहिष्कार के एडब्ल्यूटी/एसडब्ल्यूटी मुद्दे से अवगत नहीं था ... (जानना अच्छा) –

0

मैं एक ही मुद्दे पर चल रहा था और जावा 7 को एक घुमाव देने का फैसला किया। मैं उबंटू 11.10_x64 पर जावा संस्करण "1.7.0_147-icedtea" चला रहा हूं और अब नॉटिलस में फ़ाइल स्थानों को बहुत खुशी से खोलने में सक्षम हूं।

+0

Thanx, मैं इसे आज़मा सकता हूं। हालांकि ... जिस ग्राहक को समस्या है, वह विंडोज़ में काम करता है, और ग्राहक के पीसी पर एक गैर-रिलीज जारी करता है ..... –

1

मैं मिंट 13 पर एक ही मुद्दे की तरह लग रहा था। मैं जो कह सकता हूं, निर्देशिकाओं को खोलने के लिए माइम हैंडलिंग में बदलाव ने जावा डेस्कटॉप एपीआई को तोड़ दिया है। मैं संपादन

~/.local/share/applications/defaults.list 

और जोड़ने इस लाइन

x-directory/normal=nautilus.desktop 

मैं जावा संस्करण के साथ "1.7.0_05"

0

मैं टकसाल 13 दालचीनी चल रहा हूँ द्वारा समस्या को हल करने में सक्षम था मेरे लिनक्स मिंट (और विंडोज़ में नहीं) पर एक ही समस्या।

उस लिंक ने मेरी मदद की: Troubles with java.awt.Desktop browse() method

ऐसा लगता है कि यह मेरे लिनक्स मिंट-केडीई पर काम करता है। मैं साथ

Desktop.getDesktop().desktop.open(new File(new URI("file:///home/user/mypath").getPath()));// this launches Dolphin 

डॉल्फिन मेरी फ़ोल्डर "mypath" के साथ शुरू किया गया था

Desktop.getDesktop().desktop.open(new File("///home/user/mypath"));// this launches Dolphin 

या के साथ लाइन

Desktop.getDesktop().desktop.open(new File("/home/user/mypath"));// this throws IOException: Failed to show URI (except in Windows) 

बदल दिया है। लेकिन मुझे अपने लिनक्स पर पीडीएफ या टीटीटी जैसी फाइल खोलने का कोई रास्ता नहीं मिला, जबकि यह विंडोज पर पहले कोड के साथ काम करता है।

(जावा 1.8.0_25, Netbeans 8.02, लिनक्स टकसाल 12 केडीई)