إضافة الدليل النسبي إلى Java Classpath واستخدام ClassLoader (). getResourCeasStream ("")

StackOverflow https://stackoverflow.com/questions/842538

سؤال

هل من الممكن إضافة دليل نسبي (أي 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".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top