zu lösen Ich habe ein Java Java-Projekt in IntelliJ zum Schreiben und Lesen von JSON-Objekten aus Datei erstellt. Es enthält auch 2 Kostümausnahmeklassen. Ich brauche das für mein libgdx-Spielprojekt, für das Android gerade arbeitet.Kostüm Jar-Bibliothek nicht in der Lage, Ausnahmeklasse
Ich habe den folgenden Fehler festgestellt, wenn ich zu der erwarteten Ausnahme in Code komme.
Ich schaute über einige Themen und Tipps mit diesem Problem, aber ich konnte bisher keine Lösung finden. Ich denke, ich könnte das beheben, indem ich meine lib-Klassen in meinem Projekt erstelle, aber das ist nicht das, was ich tun möchte, solange es keine saubere Möglichkeit gibt, die Kostüm-Jar-Bibliothek (3rd-Party-lib) zu importieren.
Was habe ich versucht, so weit:
1) einen Ordner lib in Kernmodul Erstellt, die JAR-Datei kopiert und hinzugefügt es Projekt Struktur-> Core-> dependecies Trog.
2) auf der JAR-Datei der rechten geklickt und angeklickt als Bibliothek hinzufügen
3) Fertig, um das gleiche für Android-Modul, aber es habe ich einige Fehler Parse Ausnahmen nach gradle sync
ist die vollständige Protokoll:
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: VFY: unable to resolve exception class 1498 (Lparohylib/jsonfile/input/JSONFileReaderException;)
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: VFY: unable to find exception handler at addr 0xa
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: VFY: rejected Lparohyapp/mario/tools/data/GameProgress;.<init>()V
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: VFY: rejecting opcode 0x0d at 0x000a
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: VFY: rejected Lparohyapp/mario/tools/data/GameProgress;.<init>()V
04-16 22:02:28.808 15451-15480/parohyapp.mario W/dalvikvm: Verifier rejected class Lparohyapp/mario/tools/data/GameProgress;
04-16 22:02:28.847 15451-15480/parohyapp.mario W/dalvikvm: threadid=11: thread exiting with uncaught exception (group=0x40bd11f8)
04-16 22:02:28.855 15451-15480/parohyapp.mario E/AndroidRuntime: FATAL EXCEPTION: GLThread 26034 java.lang.VerifyError: parohyapp/mario/tools/data/GameProgress
at parohyapp.mario.GameMaster.<init>(GameMaster.java:57)
at parohyapp.mario.screens.PlayScreen.<init>(PlayScreen.java:44)
at parohyapp.mario.screens.ScreenManager.getScreen(ScreenManager.java:36)
at parohyapp.mario.screens.ScreenManager.setCurrentScreen(ScreenManager.java:28)
at parohyapp.mario.screens.MenuScreen.changeScreen(MenuScreen.java:112)
at parohyapp.mario.screens.MenuScreen.access$000(MenuScreen.java:27)
at parohyapp.mario.screens.MenuScreen$1.changed(MenuScreen.java:99)
at com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.handle(ChangeListener.java:28)
at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:181)
at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:146)
at com.badlogic.gdx.scenes.scene2d.ui.Button.setChecked(Button.java:123)
at com.badlogic.gdx.scenes.scene2d.ui.Button$1.clicked(Button.java:91)
at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:89)
at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:58)
at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:353)
at com.badlogic.gdx.backends.android.AndroidInput.processEvents(AndroidInput.java:379)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:472)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
4) zurückgekehrt alle gradle Änderungen und hinzugefügt es die Struktur-Trog> Core-> dependecies die folgende Ausnahme bekam:
FATAL EXCEPTION: GLThread 26106 java.lang.NoClassDefFoundError: parohylib.jsonfile.input.JSONFileReader
at parohyapp.mario.tools.data.GameProgress.loadData(GameProgress.java:94)
at parohyapp.mario.tools.data.GameProgress.<init>(GameProgress.java:31)
at parohyapp.mario.GameMaster.<init>(GameMaster.java:57)
at parohyapp.mario.screens.PlayScreen.<init>(PlayScreen.java:44)
at parohyapp.mario.screens.ScreenManager.getScreen(ScreenManager.java:36)
at parohyapp.mario.screens.ScreenManager.setCurrentScreen(ScreenManager.java:28)
at parohyapp.mario.screens.MenuScreen.changeScreen(MenuScreen.java:112)
at parohyapp.mario.screens.MenuScreen.access$000(MenuScreen.java:27)
at parohyapp.mario.screens.MenuScreen$1.changed(MenuScreen.java:99)
at com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.handle(ChangeListener.java:28)
at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:181)
at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:146)
at com.badlogic.gdx.scenes.scene2d.ui.Button.setChecked(Button.java:123)
at com.badlogic.gdx.scenes.scene2d.ui.Button$1.clicked(Button.java:91)
at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:89)
at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:58)
at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:353)
at com.badlogic.gdx.backends.android.AndroidInput.processEvents(AndroidInput.java:379)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:472)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
Ich kann mehr Quelle zur Verfügung stellen nur fragen, was Sie brauchen, nicht sicher, was Sie hier neben dem, was ich bereits getan habe, zu posten.
EDIT-1: 5) Erstellt ein neues Modul aus der JAR-Datei und fügte es zu Graddle Build hinzu. Haben Sie die folgende Fehlermeldung:
Error:com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
at com.android.dx.command.dexer.Main.processClass(Main.java:749)
Error:Execution failed for task ':android:transformClassesWithDexForDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_66\bin\java.exe'' finished with non-zero exit value 1
Haben Sie 'compile fileTree' mit dem Pfad zu Ihrem jar in" gradle.build "hinzugefügt? – Enigo
Ehhh Ich denke ja .. aber ein Beispiel für Code, was du buchstäblich meinst, wäre großartig. Ich habe versucht, mit FileTree zu kompilieren, anstatt nur compile_files, aber es wirft immer NoClassDefFoundError. – parohy
nur neugierig, hast du die Lösung aus meiner Antwort versucht? – Enigo