VFY: Die in der Signatur referenzierte Klasse konnte nicht gefunden werden

8

Ich habe eine einfache Android-Anwendung, die eine Modbus-Bibliothek ("jamod") auf ihrem Build-Pfad verwendet. Es stürzt sofort ab, wenn ich es laufe. Ich habe im Grunde das gleiche Problem in dieser Frage: Getting "verursacht durch: java.lang.VerifyError : "

Aber ich kann das Problem nicht wirklich beheben. Meine Anwendung hat vorher gut funktioniert, jetzt, egal was ich mache, scheint es nicht zu funktionieren.

Unten ist logcat Ausgabe. Vielen Dank im Voraus.

%Vor%     
sohretgorkem 09.08.2012, 14:57
quelle

4 Antworten

4

Hast du die jamod jar Datei in das Verzeichnis "libs" in Eclipse gelegt? Wenn nicht, wird es nicht in Ihrer Anwendung gebündelt, auch wenn es sich während der Kompilierung auf dem Pfad befindet. Dies ist eine ziemlich neue Änderung.

    
Kaediil 09.08.2012, 15:42
quelle
15

Eine Sache, die Sie überprüfen sollten, ist, dass das Kontrollkästchen für die JAR-Dateien auf der Registerkarte "Bestellung und Export" im Fenster "Pfad erstellen" aktiviert ist. Dazu gehört die Bibliothek in der gebauten APK.

    
sjunnesson 04.03.2013 21:39
quelle
1

Ich hatte eine ähnliche VFY, Link und Klasse Def nicht gefunden Fehler, obwohl alle meine Bibliotheken waren in "LIB" -Ordner und hatte sie auch in Build-Pfad hinzugefügt und ECLIPSE konnte sie leicht in Kompilierzeit finden, aber wenn sie wurden auf einem echten Gerät bereitgestellt, gab es Probleme. Lösung: Stellen Sie sicher, dass Ihre Bibliotheksdateien in den Ordner "libs" und nicht in "lib" oder "library" im ECLIPSE-Projekt abgelegt sind.

    
user2093095 20.02.2013 21:22
quelle
0

Dieser Fehler (java.lang.VerifyError) tritt auf, wenn inkompatible Ressourcen wie Schnittstellen / class / libs-Dateien, fehlerhafte Vererbungen / Einkapselung von statischen / Instanz-Level-Bezeichnern wie Variablen / Methoden / Argumente / Klassen / Dateien vorliegen.

Dieses Problem wird durch die Verletzung der OOP-Designprinzipien im Code verursacht. Also der Code von Verifikation Prozess von jvm abgelehnt und wirft Verifikationsfehler zur Laufzeit. Wenn Sie sich den Fehler stacktrace genauer ansehen, wird die Instanz der Klasse A (com.example.xmlparsertert.MainActivity) von jvm stack [java.lang.Class.newInstanceImpl (Native Method) ... java.lang.Class erstellt. neueInstanz ...]. Diese Klasse verweist oder wird von anderen Klassen mit Verletzung von Designprinzipien referenziert, was dazu führt, dass die Klasse nicht instanziiert wird.

%Vor%

Diese Warnungen können nicht ignoriert werden, da diese Warnungen die FATAL EXCEPTIONS verursachen. Dalvikvm Ingenieure haben die OOP Prinzipien als Sun Engineers Done implementiert. Es gibt verschiedene Blogs / Foren, in denen Leute sagen, diese Warnung zu ignorieren. Also ignorieren Sie diese Warnungen nicht und korrigieren Sie sie nicht speziell für Anwendungen im medizinischen / Bankwesen / Sicherheitsbereich oder diese Warnung führt dazu, dass die Anwendung beschädigt wird.

Überprüfen Sie die implementierten OOP-Designprinzipien (z. B. Vererbung / Einkapselung / Polymorphie usw.) im Code erneut. Ich wurde gebeten, solche Fehler auf einer großen Multi-Modul-Android-Anwendung zu überprüfen und zu beseitigen, und ich fand viele Design-Verletzungen.

Erster Auslöser, um solche Probleme zu lösen, macht alles öffentlich / nicht-final, was mit der Klasse zusammenhängt, die in FATAL ERROR gerät. Sobald Sie das Problem gelöst haben, implementieren Sie Ihre Designprinzipien einzeln und Sie erhalten eine fehlerfreie Anwendung.

Danke, Vinod Bherwal (Android Architekt).

    
vinod bherwal 04.12.2016 12:20
quelle

Tags und Links