عندما لا نحصل على جافا.لانغ.NoSuchMethodError حتى عندما جرة/فئة لديها particualar طريقة

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

  •  20-08-2019
  •  | 
  •  

سؤال

أنا باستخدام المكتبة IText لتسهيل تصدير pdf في الصغير.خلال تصدير الدعوة فشلت مع الخطأ التالي:

java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V

فتحت Itext jar/PdfPtable.class في دينار Decompiler وأكد أن فئة لديها completeRow العامة الأسلوب.

يمكن للشخص شرح السيناريوهات المحتملة عند java.lang.NoSuchMethodError يتم طرح حتى عندما جرة/الدرجة ؟

هنا هو كومة أثر ؛ قد لا تكون مفيدة جدا لأن معظم المكالمات هي تطبيق معين.

خطأ أثناء تصدير إلى ملف CSV - جافا.لانغ.NoSuchMethodError:com.lowagie.النص.pdf.PdfPTable.completeRow()V
com.بلوكس.الجدول.العمل.ExportToCSVAction.actionPerformed(ExportToCSVAction.java:193)
javax.سوينغ.AbstractButton.fireActionPerformed(غير معروف المصدر)
javax.سوينغ.AbstractButton$معالج.actionPerformed(غير معروف المصدر)
javax.سوينغ.DefaultButtonModel.fireActionPerformed(غير معروف المصدر)
javax.سوينغ.DefaultButtonModel.setPressed(غير معروف المصدر)
javax.سوينغ.plaf.الأساسية.BasicButtonListener.mouseReleased(غير معروف المصدر)
java.awt.المكون.processMouseEvent(غير معروف المصدر)
javax.سوينغ.JComponent.processMouseEvent(غير معروف المصدر)
java.awt.المكون.processEvent(غير معروف المصدر)
java.awt.حاوية.processEvent(غير معروف المصدر)
java.awt.المكون.dispatchEventImpl(غير معروف المصدر)
java.awt.حاوية.dispatchEventImpl(غير معروف المصدر)
java.awt.المكون.dispatchEvent(غير معروف المصدر)
java.awt.LightweightDispatcher.retargetMouseEvent(غير معروف المصدر)
java.awt.LightweightDispatcher.processMouseEvent(غير معروف المصدر)
java.awt.LightweightDispatcher.dispatchEvent(غير معروف المصدر)
java.awt.حاوية.dispatchEventImpl(غير معروف المصدر)
java.awt.نافذة.dispatchEventImpl(غير معروف المصدر)
java.awt.المكون.dispatchEvent(غير معروف المصدر)
java.awt.EventQueue.dispatchEvent(غير معروف المصدر)
java.awt.EventDispatchThread.pumpOneEventForFilters(غير معروف المصدر)
java.awt.EventDispatchThread.pumpEventsForFilter(غير معروف المصدر)
java.awt.EventDispatchThread.pumpEventsForHierarchy(غير معروف المصدر)
java.awt.EventDispatchThread.pumpEvents(غير معروف المصدر)
java.awt.EventDispatchThread.pumpEvents(غير معروف المصدر)
java.awt.EventDispatchThread.تشغيل(غير معروف المصدر)
com.lowagie.النص.pdf.PdfPTable.completeRow()V
com.بلوكس.الجدول.عرض.GridTableModel$PdfExportWriter.writeNewLine(GridTableModel.java:7259)
com.بلوكس.الجدول.عرض.GridTableModel.buildExportData(GridTableModel.java:3111)
com.بلوكس.الجدول.عرض.GridTableModel.تصدير(GridTableModel.java:2541)
com.بلوكس.الجدول.عرض.GridTable.تصدير(GridTable.java:1318)
com.بلوكس.الجدول.العمل.ExportToCSVAction.exportToFile(ExportToCSVAction.java:248)
com.بلوكس.الجدول.العمل.ExportToCSVAction.الوصول إلى$1(ExportToCSVAction.java:245)
com.بلوكس.الجدول.العمل.ExportToCSVAction$عامل.exportToCSVFile(ExportToCSVAction.java:111)
الشمس.تعكس.NativeMethodAccessorImpl.invoke0(طريقة الأم)
الشمس.تعكس.NativeMethodAccessorImpl.الاحتجاج(غير معروف المصدر)
الشمس.تعكس.DelegatingMethodAccessorImpl.الاحتجاج(غير معروف المصدر)
java.لانغ.تعكس.الأسلوب.الاحتجاج(غير معروف المصدر)
تدور.الاحتجاج.تقييم(الاحتجاج.java:175)
تدور.قبالة.SpinOffEvaluator 1 دولار.تشغيل(SpinOffEvaluator.java:108)
java.لانغ.الخيط.تشغيل(غير معروف المصدر)

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

المحلول 3

ولقد وجدت أن واحدة من جرة طرف ثالث تم تجميع نسخة قديمة من مكتبة iText

نصائح أخرى

ويمكن أن يكون نسخة مختلفة تظهر في CLASSPATH الخاص بك أو أن التوقيع من أن طريقة معينة قد تغير منذ المترجمة صفك

  1. عادة ما تكون هذه المشاكل هي السبب إذا كان هناك نسخة أخرى من المخالف الدرجة في classpath قبل النسخة التي يمكنك استخدامها للحصول على ترجمة (و أن كنت decompiled كما قلت من قبل).هذا يحدث في كثير من الأحيان كما classpath القضايا المشتركة أيضا مع الخبراء ، esp.في حاويات ، حيث ترتيب المكتبات تحميل غير محدد.

    لذلك دعونا نقول كنت تستخدم iText 1.وهو في IDE الخاص بك و يمكنك تجميع ضد.ثم يمكنك نشر التطبيق الخاص بك في بعض الحاويات ، حيث iText 1.ب المثبتة.مسبقا المكتبات الأسبقية وعندما b < ثم واجهت هذا النوع من المشاكل.

    في حالة عدم وجود حاوية, ولكن هل يمكن خلط إصدارات مكتبة أثناء التعبئة والتغليف/نشر أو مختلفة classpaths التنمية والتنفيذ.

  2. جرة ليس في classpath في وقت التشغيل فقط في وقت الترجمة.ولكن بعد ذلك سوف تحصل على NoClassDefFoundError عندما iText يتم الوصول إليها للمرة الأولى ، والذي ليس هو الحال.

  3. إذا iText نفسها ملكة جمال طرف ثالث المكتبة يمكنك أيضا الحصول على NoClassDefFoundError عند استدعاء الأسلوب الذي يحتاج راضين التبعية.

وهذا يعني نسختين من الطبقة PdfPTable هي في مسار صفك. ملفين جرة الذي تستخدمه قد تعبئتها إصدارات مختلفة من نفس الفئة. طريقة سهلة لمعرفة هي القيام -TF جرة على الملفات جرة في classpath، والبقرى لاسم_الفئة الخاص بك. إما إزالة نسخة قديمة أو تغيير ترتيب ملفات جرة في مسار صفك.

وأستخدمه نتبيانس IDE وكان لي هذه المشكلة في بعض الأحيان. على سبيل المثال عندما غيرت معالم طريقة، إلا أنها لا تعمل بعد الآن! عن طريق الخطأ، فهمت أنه بعد تغيير الأسلوب، إذا كنت على حق انقر على المشروع واضغط على "نظيف"، لم تكن هناك مشكلة بعد الآن!

وكان لي نفس المشكلة وأنا ضربت على زر مشروع تنظيف وبناء وكل شيء يعمل بشكل كبير الآن. ربما في بعض الأحيان مشكلة عالق سابقة منذ يبني وتحتاج إلى إعادة بناء.

ويمكن أيضا أن يكون ذلك نسختين من جرة تظهر في CLASSPATH الصغير وتلك التي حصلت على تحميلها على توقيع مختلف من تلك التي تم ترجمة التعليمات البرمجية الخاصة بك مع

وربما هناك نسخة أخرى من هذه الفئة في CLASSPATH قبل الإصدار الذي decompiled.
تعديل : ل<م> أو قمت بتحديث حزمة، ولكن نسوا إما نشرها إلى CLASSPATH وقت التشغيل الخاص بك أو طعاما تحديث CLASSPATH الترجمة، أي الحياة الفطرية وقت التشغيل الخاص بك هو متزامنة مع الحياة الفطرية compiletime الخاص بك.

وقدم public void completeRow() في 2.0.5. يجب أن يكون لديك نسخة قبل 2.0.5 في CLASSPATH وقت التشغيل. إذا كنت لا تزال تواجه هذه المشكلة، الرجاء دراسة CLASSPATH لبدء العملية. كما ذكر من قبل، كنت ترجمة مع النسخة 2.1.5.

وهذا عمل بالنسبة لي.

ويمكنني استخدام صافي IDE الفاصوليا. أنا ببساطة حذف HttpClient وإصلاحه والأساسية ملفات جرة (أنا باستخدام 4.2.1) وإعادة أضافت هذه. على ما يبدو لتغيير النظام، وأنه يعمل.

وإضافة إلى الإجابة "Paldin الماضي" التي ساعدتني.

وكان مشكلة مشابهة الى حد ما، على احظ التحقيق أعمق أن أسلوب فئة الجدول في جرة 3rd الطرف كنت قد وأضاف كان يتعارض مع طريقة الجدول المقابل itext-2.0.4 جرة ل. ولذا فإنني إزالة جرة 3rd الطرف من المجلد CLASSPATH والمكتبات وتشغيل نظيفة إعادة بناء والآن يجعل تماما.

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