/ / जावा वेबस्टार्ट एप्लिकेशन में जार से संसाधन प्राप्त करना - जावा, संसाधन, जार, जेएनएलपी, जावा-वेब-स्टार्ट

जावा वेबस्टार्ट एप्लिकेशन में जार से संसाधन प्राप्त करना - जावा, संसाधन, जार, जेएनएलपी, जावा-वेब-स्टार्ट

मैं जावा वेबस्टार्ट एप्लिकेशन में कई संसाधनों को लोड करने का प्रयास कर रहा हूं।

मैंने मूल रूप से इन का उपयोग करने की कोशिश की थी:

ClassLoader loader = MyClass.class.getClassLoader();
URL url = loader.getResource("resourceName");
File file = new File(url.toURI());

लेकिन यह काम नहीं किया - यह एक फेंक दियाअवैध तर्क अपवाद। आगे के शोध ने सुझाव दिया कि यह दृष्टिकोण जार फाइलों से संसाधनों तक पहुंचने के साथ काम नहीं करता है, और मुझे निम्नलिखित दृष्टिकोण का उपयोग करने की आवश्यकता है:

ClassLoader loader = MyClass.class.getClassLoader();
InputStream in = loader.getResourceAsStream("resourceName");

हालाँकि, मुझे अजीब परिणाम मिलते हैं जब मैं इसे Jnlp का उपयोग करके चलाता हूं। यदि मैं निम्नलिखित चलाता हूं:

public static void main(String[] args) throws IOException, URISyntaxException {
ClassLoader loader = MyClass.class.getClassLoader();
String r = "resourceName";
URL url = loader.getResource(r);
System.out.println(url!=null);
InputStream in = loader.getResourceAsStream(r);
System.out.println(in!=null);
}

मेरी आईडीई में, मैं सच्चा और सच्चा हो जाता हूं (जैसा कि मैं उम्मीद करता हूं)। Jnlp से चल रहा है, मैं URL के लिए सही हूं, लेकिन InputStream के लिए गलत है।

क्या मैं गलत कर सकता हूँ पर कोई विचार? जावा वेबस्टार्ट एप्लिकेशन में उपयोग के लिए लोडिंग संसाधनों के बेहतर तरीके हैं?

संपादित करें: जानकारी के लिए, मेरे संसाधन MyProject / src / main / resource में हैं, और जब जार उत्पन्न होता है, तो संसाधन जार रूट में होते हैं।

उत्तर:

जवाब के लिए 2 № 1
public static void main(String[] args) throws IOException, URISyntaxException {
ClassLoader loader = MyClass.class.getClassLoader();
String r = "resourceName";
URL url = loader.getResource(r);
System.out.println(url!=null);
InputStream in = url.openStream();
System.out.println(in!=null);
}

उत्तर № 2 के लिए 1

ठीक है - इसलिए समस्या यह थी कि मैं संसाधनों की निर्देशिका का उपयोग करने की कोशिश कर रहा था (यानी मेरे प्रश्न में उदाहरण से, संसाधननाम संसाधन फ़ाइलों की एक निर्देशिका है)।

जब तक कि अधिकांश वातावरण (जैसे एक IDE में) इस तरह से संसाधनों तक पहुंच संभव है, जावा वेबस्टार्ट से चलते समय यह संभव नहीं है।

मुझे यह पृष्ठ विशेष रूप से उपयोगी लगा: http://lopica.sourceforge.net/faq.html#listresources

... और संसाधनों की एक सूची बनाने के लिए उस दृष्टिकोण का पालन किया है, कि मैं संबंधित संसाधनों को प्राप्त करने के लिए पुनरावृति कर सकता हूं।


जवाब के लिए 0 № 3

आपको अपनी प्रकट फ़ाइल में वर्ग पथ जोड़ने की जरूरत है