สาเหตุของการได้รับ java.lang.VerifyError


191

ฉันกำลังตรวจสอบสิ่งต่อไปนี้ java.lang.VerifyError

java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMonthData signature: (IILjava/util/Collection;Ljava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageRe˜̴Mt̴MÚw€mçw€mp:”MŒŒ
                at java.lang.Class.getDeclaredConstructors0(Native Method)
                at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
                at java.lang.Class.getConstructor0(Class.java:2671)

มันเกิดขึ้นเมื่อเซิร์ฟเวอร์ jboss ที่เริ่มต้นการปรับใช้เซิร์ฟเล็ต มันถูกคอมไพล์ด้วย jdk-1.5.0_11 และฉันพยายามคอมไพล์ใหม่ด้วย jdk-1.5.0_15 โดยไม่ต้องประสบความสำเร็จ นั่นคือการรวบรวมที่ทำงานได้ดี แต่เมื่อมีการปรับใช้ java.lang.VerifyError จะเกิดขึ้น

เมื่อฉันเปลี่ยนชื่อเมธอดและได้รับข้อผิดพลาดต่อไปนี้:

java.lang.VerifyError: (class: be/post/ehr/wfm/application/serviceorganization/report/DisplayReportServlet, method: getMD signature: (IILjava/util/Collection;Lj    ava/util/Collection;Ljava/util/HashMap;Ljava/util/Collection;Ljava/util/Locale;Lorg/apache/struts/util/MessageResources ØÅN|ØÅNÚw€mçw€mX#ÖM|XÔM
            at java.lang.Class.getDeclaredConstructors0(Native Method)
            at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357
            at java.lang.Class.getConstructor0(Class.java:2671)
            at java.lang.Class.newInstance0(Class.java:321)
            at java.lang.Class.newInstance(Class.java:303)

คุณสามารถเห็นได้ว่ามีการแสดงลายเซ็นของวิธีการมากขึ้น

ลายเซ็นวิธีการที่แท้จริงคือ

  private PgasePdfTable getMonthData(int month, int year, Collection dayTypes,
                          Collection calendarDays,
                          HashMap bcSpecialDays,
                          Collection activityPeriods,
                          Locale locale, MessageResources resources) throws   Exception {

ฉันลองดูด้วยjavapแล้วและนั่นก็ให้วิธีการตามที่ควรจะเป็น

เมื่อเพื่อนร่วมงานคนอื่นของฉันตรวจสอบรหัสรวบรวมและปรับใช้พวกเขามีปัญหาเดียวกัน เมื่อเซิร์ฟเวอร์บิลด์หยิบรหัสขึ้นมาและนำไปใช้กับสภาพแวดล้อมการพัฒนาหรือการทดสอบ (HPUX) จะเกิดข้อผิดพลาดเดียวกัน นอกจากนี้ยังมีเครื่องทดสอบอัตโนมัติที่ใช้ Ubuntu แสดงข้อผิดพลาดเดียวกันในระหว่างการเริ่มต้นเซิร์ฟเวอร์

ส่วนที่เหลือของแอปพลิเคชั่นทำงานได้ดีเพียง servlet เดียวที่ไม่ได้รับการสั่งซื้อ ความคิดใด ๆ ที่จะดูจะเป็นประโยชน์


1
ฉันได้รับมาจากการใช้ ComparFailure รุ่นที่ไม่ถูกต้อง เอาไปตลอดกาลเพื่อหา ... มันเจ็บปวด
ทิมโบแลนด์

1
ฉันได้รับเมื่อใช้การเรียกใช้ทันทีในสตูดิโอ Android (hotswapping บนคอมไพล์) ปิดใช้งานได้
Serge

คำตอบ:


188

java.lang.VerifyError สามารถเป็นผลลัพธ์เมื่อคุณคอมไพล์กับไลบรารีที่แตกต่างจากที่คุณใช้ในขณะใช้งานจริง

ตัวอย่างเช่นนี้เกิดขึ้นกับฉันเมื่อพยายามเรียกใช้โปรแกรมที่คอมไพล์กับ Xerces 1 แต่พบ Xerces 2 บน classpath เรียนที่ต้องการ (ในorg.apache.*namespace) พบที่รันไทม์เพื่อให้ClassNotFoundExceptionเป็นไม่ได้ผล มีการเปลี่ยนแปลงคลาสและเมธอดต่างๆดังนั้นลายเซ็นของเมธอดที่พบในรันไทม์ไม่ตรงกับที่รวบรวมไว้ในเวลานั้น

โดยทั่วไปคอมไพเลอร์จะตั้งค่าสถานะปัญหาที่ลายเซ็นของวิธีการไม่ตรงกัน JVM ที่จะตรวจสอบ bytecode อีกครั้งเมื่อระดับที่มีการโหลดและพ่นVerifyErrorเมื่อ bytecode พยายามที่จะทำอะไรบางอย่างที่ไม่ควรจะได้รับอนุญาต - เช่นเรียกวิธีการที่ผลตอบแทนและร้านค้าแล้วว่าค่าตอบแทนในสาขาที่ถือStringList


3
สิ่งหนึ่งที่เพิ่มในบางครั้งมันเป็นความผิดของ IDE หรืออุปกรณ์ที่ bytecode ไม่ถูกต้อง ลองรีสตาร์ท IDE เพื่อให้สามารถรับรู้ปัญหาการซิงค์ ความล้มเหลวในการลบและติดตั้งแอพอีกครั้ง การรีบูตอุปกรณ์อาจช่วยได้
ima747

2
เพื่อหาที่เรียนผู้ร้ายเพิ่มอาร์กิวเมนต์ VM แล้วมองหาชั้นก่อนที่มันจะโหลด-verbose:class java.lang.VerifyErrorนี่จะมีเส้นทางไปยัง JAR ใช้javapและเปรียบเทียบสิ่งนั้นกับชั้นเรียนที่คุณรวบรวม ฉันพบว่ามีประโยชน์เนื่องจากคลาสที่มีการรายงานข้อผิดพลาดไม่ใช่สาเหตุที่แท้จริงเป็นหนึ่งในข้อโต้แย้ง
steinybot

21

java.lang.VerifyError เป็นสิ่งที่เลวร้ายที่สุด

คุณจะได้รับข้อผิดพลาดนี้หากขนาด bytecode ของวิธีการของคุณเกินขีด จำกัด 64kb; แต่คุณอาจสังเกตเห็นว่า

คุณแน่ใจ 100% ว่าคลาสนี้ไม่มีอยู่ใน classpath ที่อื่นในแอปพลิเคชันของคุณหรืออาจจะอยู่ใน jar อื่น

นอกจากนี้จาก stacktrace ของคุณการเข้ารหัสอักขระของไฟล์ต้นฉบับ ( utf-8?) ถูกต้องหรือไม่


ฉันแน่ใจว่ามันไม่ได้อยู่ที่อื่น มันคือ 43Kb ซึ่งยังคงเป็นคลาสใหญ่
Jeroen Wyseur

ขอบคุณสำหรับการโพสต์นั้นในกรณีของฉันมันเป็นการเข้ารหัสที่แตกต่างกัน: JasperReports ไฟล์ XMl บันทึกการเข้ารหัสและรุ่น java คุณต้องตั้งค่านี้ตามการตั้งค่าโครงการของคุณ (ผ่าน iReport) นั่นเป็นปัญหาที่นี่ขอบคุณสำหรับความคิดของคุณด้วยการเข้ารหัส! :)
โทเบียส

นี่เป็นปัญหาของฉันสำหรับการทดสอบ Android โดยการมัลติมันแก้ไข
Prakash Nadar

10

ดังที่ Kevin Panko กล่าวว่าส่วนใหญ่เป็นเพราะการเปลี่ยนแปลงของห้องสมุด ดังนั้นในบางกรณี "สะอาด" ของโครงการ (ไดเรกทอรี) ตามด้วยการสร้างจะหลอกลวง


9

สิ่งหนึ่งที่คุณอาจลองใช้คือใช้-Xverify:allซึ่งจะตรวจสอบ bytecode ในการโหลดและบางครั้งก็ให้ข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์หาก bytecode นั้นไม่ถูกต้อง


8

ฉันแก้ไขข้อผิดพลาดนี้บน Android ด้วยการทำให้โครงการฉันนำเข้าห้องสมุดตามที่อธิบายไว้ที่นี่ http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

ก่อนหน้านี้ฉันเพิ่งอ้างอิงโครงการ (ไม่ทำให้เป็นห้องสมุด) และฉันได้รับ VerifyError ที่แปลกประหลาดนี้

หวังว่าจะช่วยใครซักคน


2
ลิงก์นี้ไม่สามารถใช้งานได้อีกต่อไปโปรดแก้ไข ขอบคุณ
Mahdi Rashidi

8

VerifyError หมายความว่าไฟล์คลาสมี bytecode ที่ถูกต้องทางไวยากรณ์ แต่ละเมิดข้อ จำกัด ทางความหมายบางอย่างเช่นเป้าหมายการกระโดดที่ข้ามขอบเขตของเมธอด

โดยพื้นฐานแล้ว VerifyError สามารถเกิดขึ้นได้เฉพาะเมื่อมีข้อผิดพลาดของคอมไพเลอร์หรือเมื่อไฟล์คลาสได้รับความเสียหายในทางอื่น (เช่นผ่านแรมผิดพลาดหรือ HD ที่ล้มเหลว)

ลองรวบรวมด้วย JDK รุ่นอื่นและในเครื่องอื่น


5

ในกรณีของฉันโครงการ Android ของฉันขึ้นอยู่กับโครงการ Java อื่นที่รวบรวมสำหรับ Java 7 java.lang.VerifyErrorหายไปหลังจากฉันเปลี่ยนระดับการปฏิบัติตามคอมไพเลอร์ของโครงการ Java เป็น 6.0

ต่อมาฉันพบว่านี่เป็นปัญหาของ Dalvik: https://groups.google.com/forum/?fromgroups#!topic/android-developers/sKsMTZ42pwE


1
Dalvik เป็นเพียงเวอร์ชันย่อยของ Java6 ดังนั้นจึงไม่มีคุณสมบัติ Java7 ให้ใช้!
Jeroen Wyseur

4

ฉันได้รับปัญหานี้เนื่องจาก pack200 mangling ไฟล์คลาส การค้นหาเล็กน้อยทำให้เกิดข้อบกพร่องของจาวานี้ขึ้น โดยพื้นฐานแล้วการตั้งค่า--effort=4ทำให้เกิดปัญหาหายไป

ใช้ java 1.5.0_17 (แม้ว่ามันจะถูกครอบตัดในทุก ๆ ตัวแปรของ java 1.5 ที่ฉันลองใช้)


3

ฉันได้แก้ไขปัญหา java.lang.VerifyError ที่คล้ายกันโดยการแทนที่

        catch (MagickException e)

กับ

        catch (Exception e)

ที่ไหน MagickExceptionกำหนดไว้ในโครงการห้องสมุด (ซึ่งโครงการของฉันมีการอ้างอิง)

หลังจากนั้นฉันได้รับjava.lang.NoClassDefFoundErrorคลาสจากไลบรารี่เดียวกัน (แก้ไขตามhttps://stackoverflow.com/a/9898820/755804 )


1
สิ่งนี้ใช้งานได้สำหรับฉัน ... ฉันต้องการทราบว่าข้อผิดพลาดคืออะไรนอกจาก "แทนที่ฉันด้วยข้อยกเว้นแบบครอบคลุมและฉันจะทำงาน"
Alex Hart

@AlexHart สำหรับ Android แต่มีแนวโน้มว่าจะใช้ตรรกะเดียวกันสำหรับองค์กร Java: stackoverflow.com/a/36814155/253468
TWiStErRob

2

สิ่งนี้สามารถเกิดขึ้นได้บน Android เมื่อคุณพยายามโหลดไลบรารีที่รวบรวมกับ JDK ของ Oracle

นี่คือปัญหาสำหรับไคลเอ็นต์ Ning Async HTTP


คุณได้พบวิธีแก้ปัญหาสำหรับเรื่องนี้หรือยัง @MartinKonicek
Abimbola Esuruoso

2

ในกรณีของฉันฉันต้องลบบล็อกนี้:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

มันแสดงข้อผิดพลาดใกล้Fragment.showDialog()วิธีการโทร


2

ตัวอย่างน้อยที่สุดที่สร้างข้อผิดพลาด

ความเป็นไปได้อย่างง่ายอย่างหนึ่งคือการใช้Jasminหรือแก้ไข bytecode ด้วยตนเองด้วยโปรแกรมแก้ไขไฟล์ไบนารี

ให้สร้างvoidวิธีโดยไม่มีreturnคำสั่ง (สร้างโดยreturn;คำสั่งใน Java) ซึ่ง JVMS บอกว่าผิดกฎหมาย

ในจัสมินเราสามารถเขียน:

.class public Main
.super java/lang/Object

.method public static main([Ljava/lang/String;)V
   aload_0 ; Just so that we won't get another verify error for empty code.
.end method

จากนั้นเราทำjavac Main.jและjavap -v Mainบอกว่าเราได้รวบรวม:

public static void main(java.lang.String[]);
  descriptor: ([Ljava/lang/String;)V
  flags: ACC_PUBLIC, ACC_STATIC
  Code:
    stack=1, locals=1, args_size=1
       0: aload_0

ดังนั้นจริงๆไม่มีคำสั่งคืนสินค้า

ตอนนี้ถ้าเราพยายามเรียกใช้java Mainเราจะได้รับ:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.VerifyError: (class: NoReturn, method: main signature: ([Ljava/lang/String;)V) Falling off the end of the code
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)

ข้อผิดพลาดนี้ไม่สามารถเกิดขึ้นในชวาปกติตั้งแต่เรียบเรียง Java เพิ่มโดยปริยายreturnที่จะvoidใช้วิธีการสำหรับเรา นี่คือเหตุผลที่เราไม่จำเป็นต้องเพิ่มวิธีการreturnของเรา คุณสามารถตรวจสอบเรื่องนี้ด้วยmainjavap

JVMs

VerifyError เกิดขึ้นเมื่อคุณพยายามเรียกใช้ไฟล์คลาสที่ผิดกฎหมายตามที่ระบุโดยJVMS 7 บทที่ 4.5

JVMS บอกว่าเมื่อ Java โหลดไฟล์มันจะต้องเรียกใช้ชุดของการตรวจสอบเพื่อดูว่าไฟล์ระดับเป็น OK ก่อนที่จะเรียกใช้

ข้อผิดพลาดดังกล่าวไม่สามารถสร้างขึ้นในการรวบรวมและเรียกใช้รอบเดียวของรหัส Java เพราะJVMS 7 4.10 พูดว่า :

แม้ว่าคอมไพเลอร์สำหรับภาษาการเขียนโปรแกรม Java จะต้องสร้างไฟล์คลาสที่ตอบสนองข้อ จำกัด คงที่และโครงสร้างทั้งหมด [... ]

javacดังนั้นเพื่อให้ดูเป็นตัวอย่างความล้มเหลวน้อยที่สุดเราจะต้องสร้างรหัสที่มาโดยไม่ต้อง


1

หน้านี้อาจให้คำแนะนำ - http://www.zanthan.com/itymbi/archives/000337.html

อาจมีข้อผิดพลาดที่ละเอียดอ่อนในเนื้อความของวิธีการที่ javac ไม่สามารถมองเห็นได้ วินิจฉัยยากเว้นแต่คุณโพสต์วิธีการทั้งหมดที่นี่

คุณสามารถเริ่มต้นด้วยการประกาศตัวแปรให้ได้มากที่สุดเท่าที่จะเป็นไปได้ ... ซึ่งจะจับข้อผิดพลาดที่กล่าวถึงในเว็บไซต์ zanthan และมักจะเป็นการปฏิบัติที่ดีอยู่ดี


1
ผู้ชายคนนั้นโดนคอมไพเลอร์บั๊กในปี 2002 แต่ข้อผิดพลาดนั้นได้รับการแก้ไขตั้งแต่นั้นมา
Kevin Panko

1

ในกรณีของฉันโครงการ A ของฉันมีการพึ่งพาผู้อื่นพูด X (A ใช้คลาสที่กำหนดใน X) ดังนั้นเมื่อฉันเพิ่ม X เป็นโครงการอ้างอิงในเส้นทางการสร้างของ A ฉันได้รับข้อผิดพลาดนี้ อย่างไรก็ตามเมื่อฉันลบ X เป็นโปรเจ็กต์อ้างอิงและรวม jar ของ X เป็นหนึ่งในห้องสมุดปัญหาก็แก้ไขได้


1

ตรวจสอบไฟล์ jar เดียวกันหลายเวอร์ชันบน classpath ของคุณ

ตัวอย่างเช่นฉันมี opennlp-tools-1.3.0.jar และ opennlp-tools-1.5.3.jar ใน classpath ของฉันและได้รับข้อผิดพลาดนี้ วิธีแก้ไขคือลบ opennlp-tools-1.3.0.jar


1

CGLIB <2.2 กับ JRE> 6 อาจก่อให้เกิดข้อผิดพลาดที่คล้ายกันดู"ฉันควรอัปเกรดเป็น CGLIB 3.0 หรือไม่" และความเห็นบางอย่างในฤดูใบไม้ผลิ SPR-9669

นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเมื่อทุกอย่างทำงานได้ดีบน JRE 6 และเพียงสลับไปที่ JRE7 จะแบ่งสิ่งต่าง ๆ


1

เหตุผลอื่นสำหรับข้อผิดพลาดนี้อาจเป็นการรวมกันของ AspectJ <= 1.6.11 กับ JRE> 6

ดูรายละเอียดตั๋วEclipse Bug 353467และKieker 307

นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเมื่อทุกอย่างทำงานได้ดีบน JRE 6 และย้ายไปที่ JRE7 แบ่งสิ่งต่าง ๆ


1

นอกจากนี้ยังอาจเกิดขึ้นเมื่อคุณมีการนำเข้าโมดูลจำนวนมากด้วย maven จะมีสองคลาสขึ้นไปที่มีชื่อเหมือนกันทั้งหมด (ชื่อที่มีคุณสมบัติเหมือนกัน) ข้อผิดพลาดนี้เป็นผลมาจากความแตกต่างของการตีความระหว่างเวลารวบรวมและรันไทม์


1

หากคุณย้ายไปยัง java7 หรือใช้ java7 โดยทั่วไปแล้วข้อผิดพลาดนี้สามารถมองเห็นได้ ฉันพบข้อผิดพลาดด้านบนและพยายามอย่างมากเพื่อค้นหาสาเหตุที่แท้จริงฉันขอแนะนำให้ลองเพิ่ม"-XX: -UseSplitVerifier"อาร์กิวเมนต์ JVM ขณะเรียกใช้แอปพลิเคชันของคุณ


1

หลังจากอัปเดตGradleในAndroid Studio 3.6.1ขัดข้องเกิดขึ้นบน API 19 ในรุ่นบิลด์

มีความเป็นGlideห้องสมุดข้อผิดพลาด โซลูชันคือการเขียนproguard-rules.txtอีกครั้ง

การปรับลดรุ่นก็ใช้Gradleงานได้เช่นกัน ( classpath 'com.android.tools.build:gradle:3.5.3') แต่เป็นโซลูชันที่ล้าสมัยอย่าใช้งาน


0

แม้ว่าเหตุผลที่เควินพูดถึงนั้นถูกต้อง แต่ฉันจะตรวจสอบด้านล่างอย่างแน่นอนก่อนที่จะย้ายไปที่สิ่งอื่น:

  1. ตรวจสอบcglibsใน classpath ของฉัน
  2. ตรวจสอบhibernateเวอร์ชั่นใน classpath ของฉัน

โอกาสที่ดีที่การมีหลายเวอร์ชันหรือขัดแย้งกันของข้อใดข้อหนึ่งข้างต้นอาจทำให้เกิดปัญหาที่ไม่คาดคิดเช่นที่เป็นปัญหา


0

java.lang.VerifyError หมายถึงโค้ดไบต์ที่คอมไพล์ของคุณอ้างถึงสิ่งที่ Android ไม่สามารถหาได้ นี่เป็นข้อผิดพลาดในการตรวจสอบข้อผิดพลาดของฉันเฉพาะกับkitkat4.4 และเวอร์ชันที่ต่ำกว่าซึ่งไม่ได้อยู่ในรุ่นที่สูงกว่านั้นแม้ฉันจะรันบิลด์เดียวกันในอุปกรณ์ทั้งสอง เมื่อฉันใช้ json parser แจ็คสันของรุ่นเก่าจะแสดง java.lang.verifyerror

compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+'

จากนั้นฉันได้เปลี่ยน Dependancy ให้เป็นเวอร์ชันล่าสุด 2.2 เป็น 2.7โดยไม่ต้องมีcore libraryจากนั้นก็ใช้งานได้ ซึ่งหมายถึงวิธีการและเนื้อหาอื่น ๆ ของหลักถูกย้ายไปยังรุ่นล่าสุดของDatabind2.7 แก้ไขปัญหาของฉัน

compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.0-rc3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.0-rc3'

คุณรู้จัก JAR ตัวไหนที่จะมองหา
Siddharth

1
jackson-core: 2.2. + กลายเป็นมรดก ดังนั้นเราจำเป็นต้องใช้ databind: 2.7.0-rc3, คำอธิบายประกอบ: 2.7.0-rc3 หรือรุ่นล่าสุดกว่านี้ 2 นี้เพียงพอหลีกเลี่ยง jackson-core: 2.2. + ฉันได้รับตัวตรวจสอบความถูกต้องในเวลานั้น ในขณะที่ใช้รุ่น 2.7 ขึ้นไปจะไม่แสดงข้อผิดพลาดนั้น
anand krish

0

โปรดลบไฟล์ jar ที่ใช้ไม่ได้แล้วลองเรียกใช้ และมันทำงานได้สำหรับฉันฉันเพิ่มไฟล์ jar jcommons และอีกไฟล์ jcommons.1.0.14 jar ดังนั้นให้ลบ jcommons และมันใช้งานได้สำหรับฉัน



-1

ในกรณีของฉันฉันได้รับการตรวจสอบข้อผิดพลาดด้วยการติดตามสแต็กด้านล่าง

jasperreports-server-cp-6.4.0-bin\buildomatic\build.xml:61: The following error occurred while executing this line:
TIB_js-jrs-cp_6.4.0_bin\jasperreports-server-cp-6.4.0-bin\buildomatic\bin\setup.xml:320: java.lang.VerifyError: (class: org/apache/commons/codec/binary/Base64OutputStream, method: <init> signature: (Ljava/io/OutputStream;ZI[B)V) Incompatible argument to function
    at com.jaspersoft.jasperserver.crypto.KeystoreManager.createKeystore(KeystoreManager.java:257)
    at com.jaspersoft.jasperserver.crypto.KeystoreManager.init(KeystoreManager.java:224)
    at com.jaspersoft.buildomatic.crypto.KeystoreTask.execute(KeystoreTask.java:64)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:169)
    at org.apache.tools.ant.taskdefs.ImportTask.importResource(ImportTask.java:222)
    at org.apache.tools.ant.taskdefs.ImportTask.execute(ImportTask.java:163)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:180)
    at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:93)
    at org.apache.tools.ant.Main.runBuild(Main.java:826)
    at org.apache.tools.ant.Main.startAnt(Main.java:235)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

ฉันได้รับการแก้ไขโดยการลบรายการ classpath สำหรับ Commons-codec-1.3.jar มีความไม่ตรงกันในรุ่นของ jar นี้โดยที่รายการหนึ่งมาพร้อมกับ Jasper

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.