التصحيح/دمج المساعد.خصائص الملف في البرنامج المساعد باستخدام جزء

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

سؤال

في بلدي المساعد دي.الدعم.مساعدة البرنامج المساعد.خصائص الملفات.هذه خصائص الملفات تشمل سلاسل تفضيل الصفحة.

أريد استخدام هذا البرنامج المساعد لمختلف العملاء ، ولكن اسم العميل داخل خصائص الملفات.

أريد أن التصحيح خصائص الملفات باستخدام الكسوف جزء آلية.بقدر ما أنا الآن جزء المساعد يمكن تصحيح كوريسبوندينج المساعد في وقت التشغيل.

لدي ملف البرنامج المساعد.الخصائص في البرنامج المساعد دي.الدعم.المساعدة والتي تشمل خط

plugin.name = Copyright XYZ

ولدي fragemt دي.الدعم.مساعدة.جزء يتضمن ملف البرنامج المساعد.خصائص الخط

plugin.name = Copyright ABC

أتوقع أنه في وقت التشغيل سلسلة "حقوق الطبع والنشر اي بي سي" يظهر, ولكن الأمر ليس كذلك.أنا اختبرت نفسه مع فئات java منذ زمن طويل و أنا أتذكر أنه t كان له العامل.رمز جافا من جزء تم وضعه الأصلي المساعد.

هل لديك أي فكرة عن التعامل مع هذا ؟ أو لا تسيئوا جزء الآلية ؟

شكرا

تحرير:

عند إزالة البرنامج المساعد.خصائص الملف من دي.الدعم.يساعد البرنامج المساعد يعمل كما هو متوقع.جزء يتم نسخ الملف إلى الدليل المساعد ويستخدم في وقت التشغيل.

أو هل يجب أن التصحيح somce الكسوف الدرجة Can_fragments_be_used_to_patch_a_plug

هل كانت مفيدة؟

المحلول 2

الحل يجب تنفيذها مثل

أول نظرة خاصة جزء المنشأة الملف بدلا من الافتراضي الملكية الملف.

رمز (حزمة تم تغيير أسماء)

public final class FrameworkMessages {
    private static final String BUNDLE_NAME = "de.rts.messages"; //$NON-NLS-1$

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    private static final String BUNDLE_FRAGMENT_NAME = "de.rts.fragment"; //$NON-NLS-1$


    private FrameworkMessages() {
    }

    public static String getString(String key) {
        try {
            return ResourceBundle.getBundle(BUNDLE_FRAGMENT_NAME).getString(key);
        } catch (MissingResourceException e) {
            // Use messages in this plugin when no external fragment files can found
        }

        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }

    public static String getString(String pKey, Object[] pArgument) {
        try {
            return MessageFormat.format(RESOURCE_BUNDLE.getString(pKey), pArgument);
        } catch (MissingResourceException e) {
            return '!' + pKey + '!';
        }
    }
}

نصائح أخرى

وفقا كيفية تدويل الخاص بك الكسوف في المكونات المادة

المكونات في جزء يوفر وظائف إضافية إلى هدفه في المكونات.
في وقت التشغيل, هذه المكونات في المساهمات يتم دمج جنبا إلى جنب مع كل شيء يعتمد شظايا.

هذه المساهمات يمكن أن تتضمن رمز والمساهمات من الموارد المرتبطة في المكونات ، مثل الممتلكات و ملفات HTML.

وبعبارة أخرى ، فإن المكونات في الوصول إلى جزء محتويات عبر المكونات في classloader.

الكسوف منصة دمج المكونات في شظايا في وقت العناصر في جزء زيادة الأصلي المستهدفة في المكونات.
الهدف في المكونات لا يتم نقل أو إزالة أو تعديل في أي شكل من الأشكال.

لأن جزء من موارد يقع classloader, المكونات في المطور قد لا تحتاج إلى معرفة ما إذا كانت الموارد يتم تحميلها من المكونات في جرة ملف أو أحد شظاياه' جرة الملفات.


وأظن classLoader الكشف عن plugin.name في de.support.help المساعد الأول قبل de.support.help.fragment شظية.

عند هذه النقطة, أنا لست متأكدا من أنه يمكن القيام به ، حيث أنه قد حاول من قبل (بالنسبة الكسوف CheckStyle المساعد) ، من دون الكثير من النجاح.

لا يمكنك استبدال المحتوى من ملف مع جزء فقط إضافة ملفات إضافية.وينطبق ذلك على كل الطبقات ، خصائص الملفات والصور ...

هناك العديد من الأساليب القياسية من أجل حل هذه المشكلة:

  • يمكنك إضافة ملحق نقطة مع العملاء معلومات محددة.
  • يمكنك أن ننظر أولا ملف خاص و هذا الانخفاض تعود إلى عام واحد - كما فعلت من قبل ماركوس.
  • هل يمكن أن يكون اختياري الاعتماد على البرنامج المساعد مع المعلومات ذات الصلة.

أنا أفضل الحل الأخير لأن هذا يسمح أيضا يمكن أن تختار بين البديلة خوارزميات وغيرها من الأمور التي لا تنتمي .خصائص الملفات...

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