SORU
19 EYLÜL 2008, Cuma


Bir java almanın sebep.lang.VerifyError

Aşağıdaki java araştırıyorum.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)

Hangi sunucu uygulaması dağıtılır jboss sunucusu başlatıldığında oluşur. Fırsatlar-1.5.0_11 ile derlenen ve fırsatlar-1.5.0_15 ile yeniden derlemek için başarı olmadan denedim. Bu derleme iyi çalışır ama java dağıtıldığında.lang.VerifyError oluşur.

Bu code > olarak değiştirdim ve aşağıdaki hata var:

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)

Yöntem imzası daha gösterilir.

Gerçek yöntem imzası

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

Ben zaten javap ile aramaya çalıştı ve olması gereken yöntem imza verir.

Diğer meslektaşlarım kodunu kontrol et, derle ve dağıtmak, aynı sorun var. Bu kodu sunucu alır inşa ve geliştirme veya test ortamları (HPUX) üzerinde dağıtır, aynı hata oluşur. Ayrıca otomatik test makinesi ubuntu çalışan server başlangıç sırasında aynı hatayı gösteriyor.

Uygulamanın diğer bir sunucu uygulaması bozuk tek sorun çalışır. Bak nerede herhangi bir fikir yararlı olacaktır.

CEVAP
25 Mart 2010, PERŞEMBE


java.lang.VerifyError zamanında kullandığınızdan daha farklı bir kütüphane karşı derlenmiş sonucu olabilir.

Örneğin, bu Xerces ama Xerces 2 1, karşı derlenen bir programı çalıştırmaya sınıf bulunduktan sonra bana da oldu. Gerekli sınıfları (org.apache.* ad) ClassNotFoundException oldu zamanında bulunmuşturdeğilsonuç. Derleme yöntemi imzaları zamanında buldum ne olduğunu eşleşmedi böylece, sınıflar ve yöntemler için bir değişiklik olmuştu.

Normalde, derleyici yöntemi imzalar uyuşmuyor sorunları bayrağı olacak. JVM olacak doğrulamak bayt kodu tekrar ne zaman sınıftır yüklü, ve atar VerifyError Java çalışıyor yapacak bir şey olmamalı izin -- örneğin, bir arama yöntemi döndürür String ve sonra saklayan dönüş değeri bir alan tutar List.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007