JAR Komponente nicht erkannt

seux

Aktives Mitglied
Hallo zusammen,

ich hab hier eine eigene JAR Komponente, welche ich gerne in mein Android Projekt integrieren möchte. Allerdings werden die Klassen innerhalb des JAR's nicht erkannt. Wenn ich allerdings ein ganz normales Java Projekt mache und die JAR zum Build Path hinzufüge, kann ich die Klassen ansprechen.

Woran liegt das?

gruß seux
 
Hey,
Eigentlich sollte es genau so funktionieren. Aber was heißt "nicht ansprechen"? Also Eclipse zeigt dir Fehler an, dass die entsprechenden Methoden nicht gefunden werden können? Oder wirft Android "ClassNotFoundExceptions" zur Laufzeit?
Im ersten Fall, was für jars sind das? Und liegen die im Workspace? Oder bindest du sie extern ein, wenn ja solltest du mal versuchen nen Ordner libs in deinem Projekt zu erstellen die Jars da rein kopieren und von da aus einbinden.
Im zweiten Fall könnte es evtl. helfen in den Build Path Optionen unter Order and Export bei den jars die du benutzt die Häckchen zu setzen.

Grüße,
sMau
 
Also Fehler zeigt mir Eclipse nicht an. Erst zur Laufzeit, wenn eine Instanz der Klasse angelegt werden soll, fliegt ein NoClassDefFoundError. Das ding ist ja, dass ich in einem ganz normalen Projekt die Klassen ansprechen kann. Bei Android beendet sich die App auf dem Emulator und liefert mir diesen Fehler

PS:
In der Build Path Configuration hab ich jetzt bei Import/Export den Haken bei meinem JAR angewählt. Es kommt trotzdem der selbe Fehler
 
Zuletzt bearbeitet:
Mhh ok, geht es um jars die du selbst gemacht hast oder irgendwelche externen? Wenn du sagen kannst um welche jars es sich handelt könnte ich es mal bei mir ausprobieren.
Wenn das nichts besonderes ist, oder sich nicht irgendwie mit den Android eigenen Bibliotheken schneidet, liegt es wohl daran, dass Eclipse beim exportieren aus irgendeinem Grund keine dex code von deinen jars erzeugt (dex code ist ein optimierter bytecode der von Android aus Ressourcen Gründen benutzt wird). Ich hatte mal ein ähnliches Problem, ist aber leider etwas her und bei mir hat es glaub ich geholfen, erstmal zu gucken ob es vom ADT Plugin Updates gibt zu gucken ob es im Android SDK Updates gibt und das Project einmal aus Eclipse zu löschen und dann nochmal neu zu importieren.
Eventuell kannst du auchmal versuchen Rechtsklick auf dein Android Projekt zu machen und dann "Fix Proejct Setup" klicken.
Außerdem ist es glaube ich wichtig, dass die jars auf jeden Fall in einem Ordner im Projekt selbst liegen und dann über einen relativen Pfad zum BuildPath hinzugefügt werden, sprich nicht über "Add external JAR" sondern über "Add JAR".

Ich hoffe einer der Tips hilft.

Grüße,
sMau
 
Wenn ich mich recht erinnere werden die Jars im AndroidProjekt standardmäßig nicht in die APK Datei übernommen. Ich hatte damals ein ähnliches Problem. Allerdings habe ich mir so beholfen, dass ich das andere Projekt (ich hatte die Sourcen) in den BuildPath aufgenommen habe ... und damit war das Thema auch erledigt. Ich weiß allerdings nicht, ob es eine Möglichkeit gibt die Jars mit in die APK einzufügen. Laut meinem Vorredner wird hier wohl spezieller Bytecode verwendet und somit könnte ich mir vorstellen, dass von Standard Java compilierte Klassen nicht verwendet werden können.
 
Also kompiliert hab ich die Dateien mit der JavaSE Version. Muss ich das über das JavaME vielleicht kompilieren?

Alos die JAR hab ich selbst gebastelt. Ich werd das mal mit Add JAR und dem Project Fixup probieren
 
Also kompiliert hab ich die Dateien mit der JavaSE Version. Muss ich das über das JavaME vielleicht kompilieren?

Alos die JAR hab ich selbst gebastelt. Ich werd das mal mit Add JAR und dem Project Fixup probieren

Also erst mal ist Android SDK != JavaME.

Nimm ein Android Projekt, steck da deine Sourcen von der Jar rein und füge dieses Projekt dem Build Path deines anderen Projekt hinzu. Sollte so gehen, weil ich es auch so mache.

Theoretisch sollte es möglich sein, dass du ein APK File aus deinen Sourcen machst (Android Projekt) und dieses deinem Projekt hinzufügst (***ungetestete Meinung***).
 

Neue Themen


Zurück
Oben