استخدام Jing مع Google App Engine.لا يمكن تحميل SchemaFactory نظرًا لمخطط Relax NG

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

سؤال

حسنًا، هذا هو ملخص ما أحاول تحقيقه.أقوم بتطوير تطبيق Google App Engine صغير يقوم بإنشاء XML لكائن معين.

الآن، أواجه مشكلات لأنني بحاجة إلى استخدام مخطط Relax NG والتحقق من صحته مقابل كائن المستند الخاص بي.يعمل هذا بشكل جيد على جهازي المحلي (Eclipse Helios Java EE، وMac OS X Snow Leopard، وGoogle Web Toolkit 2.2.0، وApp Engine 1.4.2)، ولكن بمجرد النشر إلى App Engine، يفشل الكود الخاص بي ويطرح استثناء IllegalArgumentException. .

الاستثناء المحدد هو هذا:

   java.lang.IllegalArgumentException: No SchemaFactory that implements the schema language specified by: http://relaxng.org/ns/structure/1.0 could be loaded

السطر (السطر) المحدد من التعليمات البرمجية الذي يشكو منه هو ما يلي:

  System.setProperty(SchemaFactory.class.getName() + ":" + XMLConstants.RELAXNG_NS_URI, "com.thaiopensource.relaxng.jaxp.CompactSyntaxSchemaFactory");
  SchemaFactory schemaFac = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);

السطر الأخير هو السطر الذي يطرح الاستثناء.

لقد حاولت البحث عبر الإنترنت، ونشرت في العديد من مجموعات Google، لكن لم يأت أحد بفكرة.

ملحوظة: لقد استخدمت بعض التعليمات البرمجية أعلاه من هذا المثال: كيفية التحقق من صحة مستند XML باستخدام مخطط RELAX NG وJAXP؟

أشك في أن App Engine لا يقوم بتحميل Jing.jar لسبب ما.لا أعرف كيف يمكنني التحقق مما إذا كان الأمر كذلك أم لا.

سيكون موضع تقدير أي مساعدة!شكرًا!

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

المحلول 3

حسنا، لقد وجدت بالفعل نبذة عن الأنفر التي تأخذها بالكامل (المخربلة عمليا) من System.SetProperty.

اتضح أن Jing لديه طبقة صغيرة تسمى "compactsyntaxschemafactory".

هنا هو كيف استخدمته: giveacodicetagpre.

عملت مثل سحر.

نصائح أخرى

هذا المنشور فقط للتوضيح.

الطريقة المعتادة أود التحقق من صحة مستند XML مع Jing and Relax ng هو: giveacodicetagpre.

الآن، في محرك التطبيق، فإن أول سطرين لا يعملان، وتتسبب في إلقاء إلقاؤها، كما تقول.لذلك تبادل لهم مع giveacodicetagpre.

هل الحيلة.ملخص (بما في ذلك الواردات): giveacodicetagpre.

لاحظ أن هذا هو لشرعية في بناء جملة XML.للحصول على بناء الجملة المدمجة، تبادل XmlsyntaxschemoFactory مع CompactsyntaxschemoFactory.

أعتقد ذلك System.setProperty() فاشل، أو بالأحرى لا يتم استخدامه بشكل صحيح.وفق المستندات:

جميع خصائص النظام ومتغيرات البيئة خاصة بتطبيقك.يؤثر تعيين خاصية النظام فقط على طريقة عرض تطبيقك لتلك الخاصية، وليس طريقة عرض JVM.

إذا كان SchemaFactory جزءًا من JDK (وهذا ما أعتقده)، فقد لا تتمكن من إعادة تعيينه.ومع ذلك، قد يكون لديك المزيد من الحظ في ضبط خاصية النظام في جهازك ملف التطبيق, ، حيث قد يتم تغيير هذا في وقت سابق من تسلسل بدء التشغيل.

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