إضافة الدليل النسبي إلى Java Classpath واستخدام ClassLoader (). getResourCeasStream ("")
-
20-08-2019 - |
سؤال
هل من الممكن إضافة دليل نسبي (أي Foo/Bar/Plugh) إلى Java Classpath واستخدامه
InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");
لجلب foo/bar/plugh/xyzzy.properties؟
يبدو أن classpath الخاص بي:
foo.jar;foo/bar/plugh;xyz.jar
وأنا قادر على استخدام الفصول والموارد من كل من الجرار FOO و XYZ ولكن ليس من دليل PLUGH. في تلك الحالات ، in
دائما لاغ.
لا يمكنني الحصول على هذا للعمل ولست متأكدًا مما إذا كان هذا غير مدعوم ، فأنا أفتقد شيئًا خفيًا أو إذا كنت أفعل شيئًا خاطئًا. هل أحتاج إلى استخدام مسار مطلق؟
المحلول
ربما أسيء فهم ما تحاول القيام به ، ولكن إذا كان لديك مجلد في ClassPath الخاص بك ، فهذا يعني أن جميع الملفات الموجودة تحتها يجب أن تكون في ClassPath أيضًا. إذا لم يكن الأمر كذلك ، يمكنك دائمًا تمرير ملف .properties على مسار الفصل.
ولكن في كلتا الحالتين ، نظرًا لأن الملف/المجلد الذي يحتوي على الملف موجود في ClassPath ، يجب أن تكون قادرًا على القيام بذلك:
InputStream in = new FileInputStream("classpath:xyz.properties")
ونظرًا لأن "Foo/Bar/Plugh" موجود في ClassPath ، فإن أحد الأماكن التي ستبحث عنها XYZ.Properties في "Foo/Bar/Plugh".