2009-09-24 7 views
15

के लिए समर्थन जोड़ना हम एसएफटीपी पर कुछ एक्सेस करने के लिए Apache Commons VFS का उपयोग करने का प्रयास कर रहे हैं। It claims to support SFTP, हालांकि, जब यह शुरू होता है तो हमें MalformedURLException मिल रहा है। चारों ओर खोदने से मुझे लगता है कि apache vfs java.net.URL का उपयोग कर रहा है। हालांकि दस्तावेज मुझे बताता है कि यह वास्तव में sftp:// यूआरएल का समर्थन नहीं करता है। निम्नलिखित प्रोटोकॉल के लिएकॉमन्स वीएफएस और जावा.net.URL - "sftp: //" प्रोटोकॉल

प्रोटोकॉल हैंडलर खोज पथ पर मौजूद हैं की गारंटी है: - अतिरिक्त प्रोटोकॉल के लिए

http, https, ftp, file, and jar 

प्रोटोकॉल हैंडलर भी उपलब्ध हो सकता है।

मैं लिनक्स पर जावा 1.6.0 का उपयोग कर रहा हूं। को sftp:// यूआरएल देखता है जब मैं wobbly फेंकने से कैसे रोक सकता हूं? मुझे अपाचे कॉमन्स वीएफएस लाइब्रेरी का उपयोग करना जारी रखना है, जो java.net.URL का उपयोग करता है।

+0

आप एसएफटीपी कनेक्शन कैसे बना रहे हैं? एसएफटीपी क्लाइंट फैक्ट्री का उपयोग करना, या कुछ और? – Yishai

उत्तर

20

एक ही बात करने के लिए dependencies की सूची कॉमन्स-वीएफएस SFTP काम करने के लिए की आवश्यकता है एक तरीका है।एक बार JSch कक्षापथ में है, तो आपका अपवाद अब नहीं होगा। Sftp के माध्यम से कनेक्ट करने के उदाहरणों के लिए Apache's Wiki पर एक नज़र डालें।

+0

जेएसएच स्थापित करना और इसे मेरी जार फ़ाइल में शामिल करना स्वचालित रूप से सबकुछ ठीक किया गया। – Rory

+0

मैं अपने pom.xml करने के लिए निर्भरता \t com.jcraft jsch 0.1.51 गयी। लेकिन समस्या अभी भी मौजूद है, कोई विचार? –

+0

धन्यवाद, आपने मेरा दिन बचाया! – oli206

2

मैं sftp और ssh को संभालने के लिए jsch का उपयोग करता हूं। यह java.net.URL से अपवाद को रोकने में आपकी सहायता नहीं करेगा, लेकिन यह आपको sftp सामान करने में मदद करेगा।

+0

मुझे अपाचे कॉमन्स वीएफएस मॉड्यूल का उपयोग करने की आवश्यकता है। मैं इसके मूल भागों को फिर से लिखना नहीं चाहता हूं। – Rory

1

आपके कोड को कैसे संरचित किया जाता है, इस पर निर्भर करते हुए, आप यूआरएल पार्सिंग विधि को स्ट्रिंग देने से पहले एस को हटा सकते हैं, ध्वज सेट कर सकते हैं, और यदि यह मान्य होता है, तो उस ध्वज को जांचें और सेट होने पर इसे वापस रखें। यह बदसूरत है, लेकिन यह एक कामकाज प्रदान करेगा।

3

एक नया यूआरएल प्रोटोकॉल हैंडलर लागू करने के तरीके के बारे में this description पर एक नज़र डालें (दस्तावेज़ एक एलडीएपी प्रकार के यूआरएल का वर्णन करता है, लेकिन आप इसे sftp योजना से सामान्यीकृत करने में सक्षम होना चाहिए)।

दस्तावेज़ से:

आप देख सकते हैं, दो उदाहरण के बीच फर्क सिर्फ इतना है जिसे हम दूसरे मामले में एक LDAP URL का उपयोग है।

: हालांकि, एलडीएपी नमूना चलाने के लिए आप पहली बार IAIK-JCE की LDAP प्रोटोकॉल हैंडलर रजिस्टर करने के लिए java.net यूआरएल ढांचा LDAP कक्षाएं IAIK-JCE की समर्थन करने के लिए देखने के लिए जहां यह बताने के लिए होगा

System.getProperties().put("java.protocol.handler.pkgs", "iaik.x509.net");

होने के बाद IAIK LDAP प्रोटोकॉल हैंडलर, एक IAIK-JCE LdapURLConnection वस्तु जब एक LDAP URL के लिए url.openConnection बुला दिया जाता है पंजीकृत।

(जोर मेरा)

4

मैंने पहले वीएफएस उपयोग नहीं किया है, लेकिन जैसे आप (कम से कम) register एक SFTP FileProvider. यह यह कैसा दिखता आवश्यकता होगी ऐसा लगता है कि कुछ की आवश्यकता है:

DefaultFileSystemManager fsm = ... /* Create and configure your FSM. */ 
fsm.addProvider("sftp", new SftpFileProvider()); 

शायद के माध्यम से configuration file syntax.

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