जावा रनटाइम निष्पादन

मैं विभिन्न एक्सएलएस फाइलों को सीएसवी में बदलने की कोशिश कर रहा हूं। जब मैं टर्मिनल में निम्न आदेश निष्पादित करता हूं तो यह ठीक काम करता है

    libreoffice --headless --convert-to csv --outdir 
/Data/edennis/ /Data/edennis/2013-10/*.xls

लेकिन जब मैं रनटाइम निष्पादन के साथ प्रयास करता हूं तो यह नहीं करता है।

मैंने जो शोध किया है:

  1. According to this thread Java Runtime exec() behavior cannot execute system commands like echo, but libreoffice is not a system command, isn't it an executable program ?
  2. Java runtime execThis thread recommends to use processBuilder, but not sure if this is what I would need to do in my case.
  3. According to the Java Doc:

EXEC:   निर्दिष्ट स्ट्रिंग कमांड को एक अलग प्रक्रिया में निष्पादित करता है   निर्दिष्ट वातावरण।

0
@ piet.t कोई त्रुटि नहीं, यह टूटने से नहीं चलता है लेकिन यह निष्पादित नहीं करता है ..
जोड़ा लेखक Eduardo Dennis, स्रोत
आप इसे कैसे कहते हैं? शायद आपको निष्पादन योग्य फ़ाइल को पूरा पथ देना होगा?
जोड़ा लेखक Plux, स्रोत
क्या कोई त्रुटि है जो आप हमारे साथ साझा करना चाहते हैं?
जोड़ा लेखक piet.t, स्रोत

1 उत्तर

सबसे पहले, ऐसा कोई कारण नहीं है कि Runtime.exec को चलाने/bin/echo (यदि उपलब्ध हो) चलाने में सक्षम नहीं होना चाहिए।

दूसरा, हाँ, प्रोसेसबिल्डर का उपयोग करें।

तीसरा, आपकी समस्याएं *। Xls जैसे फ़ाइल पैटर्न के लिए खोल वाक्यविन्यास का उपयोग करने से रोकती हैं। Runtime.exec आपके द्वारा निर्दिष्ट प्रोग्राम को कॉल करता है, न कि एक शेल जो फ़ाइल नाम विस्तार करेगा। यदि आपको फ़ाइल नाम विस्तार करने की आवश्यकता है, तो एक खोल चलाएं जैसे:

"sh -c libreoffice --blabla *.xls"
0
जोड़ा
यह धन्यवाद काम किया! मुझे एक स्ट्रिंग सरणी का उपयोग करना पड़ा लेकिन अन्यथा ठीक काम किया।
जोड़ा लेखक Eduardo Dennis, स्रोत