2013-05-19 8 views
8

के तहत जारफ़ाइल तक पहुंचने में असमर्थ मुझे पता है कि यहां पर कई "जारफाइल तक पहुंचने में असमर्थ" प्रश्न हैं, लेकिन मुझे लगता है कि यह अपने स्वयं के धागे की गारंटी देने के लिए काफी अलग है।साइगविन

मैं एक walkthrough लिख रहा हूँ, इस walkthrough के हिस्से में सिगविन स्थापित करने और एक .jar फ़ाइल चलाना शामिल है।

समस्या यह है कि यह .jar फ़ाइल को एकाधिक निर्देशिकाओं से बुलाया जाना चाहिए, और मेरे पाठकों को हर बार इसे चलाने के लिए .jar के पूर्ण पथ में प्रवेश करने की बजाय, मैं उन्हें केवल सिगविन के लिए एक सरल विन्यास करने के बाद .jar फ़ाइल कमांड दर्ज करना होगा।

मैंने पैथ को ~/.bashrc में जोड़ने का प्रयास किया है और क्लासस्पैट जोड़ने का भी प्रयास किया है, लेकिन इसमें कोई सफलता नहीं मिली है।

हर बार जब मैं आह्वान java -jar file.jar मैं Error: Unable to access jarfile file.jar

मैं इस को हल करने में क्या करना चाहिए मिल सकता है?

[संपादित करें]

मैं मेरे भाई जी, जो लिनक्स के बारे में थोड़ा जानता है से बात की है, और वह सुझाव दिया है कि मैं जार निष्पादित करने के लिए एक आवरण बनाने के लिए, मैं एक त्वरित खोज पड़ा है, लेकिन कुछ भी आसान नहीं मिल सकता है।

कोई सुझाव?

उत्तर

7

Cygwin पहले से ही यूनिक्स (पीओएसआईक्स) -स्टाइल पथ और विंडोज (एमएस-डॉस) -स्टाइल पथों के बीच कनवर्ट करने का एक तरीका प्रदान करता है, इसे "cygpath" कहा जाता है।

प्रयास करें:

java -jar `cygpath -w ./foo/bar/file.jar command file.1 file.2` 

ध्यान रखें: उन cygpath मंगलाचरण आसपास बैकटिक हैं।

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

8

जावा -jar file.jar केवल तभी काम करता है जब file.jar आपकी वर्तमान कार्यशील निर्देशिका में है। यदि नहीं, तो आपको file.jar के पथ प्रदान करने की आवश्यकता है। ध्यान दें कि यदि आप ओरेकल जावा का उपयोग कर रहे हैं, तो आपको यह पता होना चाहिए कि यह एक मूल विंडोज प्रोग्राम है और सिगविन के * एनआईक्स पथ को समझ में नहीं आता है।

आपके दामाद की सलाह के लिए, वह सही है कि जावा प्रोग्राम आमतौर पर * एनआईक्स प्लेटफ़ॉर्म पर रैपर स्क्रिप्ट के माध्यम से लॉन्च किए जाते हैं। आप ओरेकल जावा का उपयोग कर रहे हैं, तो इस तरह दिखेगा:

#! /bin/sh 
exec java -jar $(cygpath -w /path/to/file.jar) "[email protected]" 
+0

चीयर्स - मैं बस एक समान समाधान ढूंढने में कामयाब रहा। नीचे दिए गए "मेरा जवाब" देखें, जब मैंने उत्तर दिया था;) – Escribblings

2

ठीक है, यह अब सुलझा लिया गया है।

मैंने एक बैश स्क्रिप्ट बनाने में कामयाब रहा है जो .jar और इसके तर्कों को कॉल करता है, और Bernie Zimmerman's Blog पर धन्यवाद, मैंने इसे चलाने में कामयाब रहा है।

समस्या यह प्रतीत होती है कि साइगविन पॉज़िक्स फ़ाइल नामों का उपयोग कर लिनक्स पर्यावरण है, जावा अभी भी विंडोज फ़ाइल नाम चाहता है।

प्रश्न में .jar में 2 संभावित आदेश हैं, और इन आदेशों को एक फ़ाइल पर लागू करता है और एक और फ़ाइल बनाता है।

तो मैं अब जगह ले सकता है

java -jar ./foo/bar/file.jar command file.1 file.2

साथ

jar.sh command file.1 file.2

बैश स्क्रिप्ट मैं बनाया है:

#!/bin/bash
java -jar "C:\foo\bar\file.jar" "$1" "$2" "$3"