# Eclipse: cdc.jar in eine Midlet Suite integrieren



## mkant (10. Feb 2010)

Hallo,

mein Problem:
ich möchte ein Midlet schreiben (CLDC). Möchte aber zusätzlich Klassen aus dem CDC Paket inegrieren (z.B. java.util.List). Ich habe schon versucht die cdc.jar in den Build Path zu integrieren, jedoch kommt dann folgende Fehlermeldung, wenn ich versuche ein package zu erstellen:

Preverification errors:
Error preverifying class java.lang.String

Ich hoffe mir kann jemand helfen.

Danke

Gruß

Mathias


----------



## The_S (10. Feb 2010)

Kannste vergessen, geht nicht! Spätestens auf dem Endgerät wird das Fehlschlagen.


----------



## mkant (10. Feb 2010)

gibt es denn eine Möglichkeit ein Midlet anzulegen und im Allgemeinen solche Sachen wie z.B. java.util.List zu verwenden?


----------



## The_S (11. Feb 2010)

Nee, aber programmier dir doch selbst eine List. So schwer ist das auch wieder nicht  .


----------



## mkant (11. Feb 2010)

ja schon, aber das Problem an sich ist, dass ich andere nicht-mobile-Projekte verwenden möchte. Das heißt ich möchte Methoden von den anderen Projekten aufrufen. Und für diese Aufrufe benötige ich z.B. Listen. 
Kann ich das denn mit einer CDC-Applikation machen?


----------



## The_S (11. Feb 2010)

Du kannst keine CLDC Programme mit CDC Programmen verknüpfen, du kannst keine CLDC mit SE Programmen verknüpfen, und du kannst auch keine CDC mit SE Programmen verknüpfen. Sonst bräuchte man ja auch überhaupt keine unterschiedlichen Plattformen, wenn alles überall läuft  .


----------



## mkant (11. Feb 2010)

aber das ist doch alles Java. Wenn das beides mit dem gleichen Compiler kompiliert werden würde, könnte ich doch die Class-Files durch eine .jar Datei in den Build-Path integrieren, oder nicht?
Das wäre echt wichtig.


----------



## mkant (11. Feb 2010)

Gibt es gar keine Möglichkeit andere Bibliotheken (mit dem gleichen Compiler kompiliert) in irgendein Windows Mobile Projekt zu verwenden?


----------



## The_S (11. Feb 2010)

Du könntest theoretisch natürlich die Class-Dateien von SE nach CDC nach CLDC oder umgekehrt kopieren. Dabei kannst du aber auf einige Probleme stoßen. Bspw.:

- Keine Kompatibilität auf dem Endgerät (CLDC 1 hat bspw. keine Fließkommazahlen)
- Klassen (oder Klassen auf welche benötigte Klassen referenzieren) verwenden native Funktionen, die auf dem anderen Endgerät folglich nicht verfügbar oder anders implementiert werden müssen
- kA ob man die Klassen aus lizenztechnischer Sicht einfach kopieren darf
- ...

Ansonsten wäre es evtl. hilfreich, wenn du mal genauer erklärst, was du überhaupt machen willst. SE ist halt was anderes als ME und in ME ist CDC etwas anderes als CLDC. Und auf externe JAR-Dateien im Classpath zu verweisen geht meines Wissens nach im CLDC sowieso nicht. Du kannst sie nur entpacken und ins JAR-File integrieren. Aber dafür würde ich meine Hand jetzt nicht ins Feuer legen.

Mir wäre es auch wichtig, dass ich ENDLICH Millionär werde, aber irgendwie hilft mir da auch keiner bei  .


----------



## mkant (11. Feb 2010)

Also was ich machen will:
Ich will eine Applikation (egal ob CDC oder CLDC oder sonst was: da bin ich offen. Das mit dem es geht) für ein Windows Mobile Phone (5 und 6) schreiben. (HP iPAQ 214 und HP iPAQ hx2700)
Es existieren für andere Projekte jedoch schon gewisse Basisklassen, die ich natürlich auch verwenden sollte. (die aber natürlich im SE vorliegen). Ich hätte sie halt als kompilierte .jar Dateien in die Library getan.
Auf der eclipseme.org seite ist auch beschrieben wie man .jar Dateien einem Projekt hinzufügt. Also muss es ja theoretisch möglich sein.

Das kann doch nicht unmöglich sein, oder?


----------



## The_S (11. Feb 2010)

mkant hat gesagt.:


> Ich will eine Applikation (egal ob CDC oder CLDC oder sonst was: da bin ich offen. Das mit dem es geht) für ein Windows Mobile Phone (5 und 6) schreiben.



Jo, müsstest dann CDC oder CLDC nehmen - je nach dem welche VM auf dem Windows Mobile Phone installiert ist. Soweit noch alles möglich ;-) .



mkant hat gesagt.:


> Es existieren für andere Projekte jedoch schon gewisse Basisklassen, die ich natürlich auch verwenden sollte. (die aber natürlich im SE vorliegen).



Es ist weder natürlich, dass du die auch verwenden sollst, noch dass sie in SE vorliegen.



mkant hat gesagt.:


> Ich hätte sie halt als kompilierte .jar Dateien in die Library getan.



Und dann? SE Bibliotheken greifen auf Klassen der JRE für Desktoprechner zu. Diese sind definitiv nicht in einer Java ME VM verfügbar!



mkant hat gesagt.:


> Auf der eclipseme.org seite ist auch beschrieben wie man .jar Dateien einem Projekt hinzufügt. Also muss es ja theoretisch möglich sein.



Es ist problemlos für Jars möglich, die als CLDC bzw. CDC "Projekt" vorliegen.



mkant hat gesagt.:


> Das kann doch nicht unmöglich sein, oder?



Du müsstest alle benötigten Klassen aus der Desktop JRE mitsamt Abhängigkeiten extrahieren, Java ME Kompatibel umschreiben, in dein Projekt hinterlegen, und sowohl in deinen separaten Bibliotheken als auch in deinem ME-Projekt referenziert werden (und nicht mehr auf die Standard-Java-SE-Klassen referenzieren). Wenn du dann auch noch alles Java 1.4 Bytecode Kompatibel hinbekommst, dann haste dein Ziel erreicht.


----------



## mkant (11. Feb 2010)

> Und dann? SE Bibliotheken greifen auf Klassen der JRE für Desktoprechner zu. Diese sind definitiv nicht in einer Java ME VM verfügbar!



aber die j2me klassen sind doch die gleichen, wie in der J2SE, oder nicht. sowie ich das verstanden habe ist j2me nur eine Untermenge von J2SE und wird auch irgendwann in das J2SE integriert.


----------



## The_S (11. Feb 2010)

mkant hat gesagt.:


> aber die j2me klassen sind doch die gleichen, wie in der J2SE, oder nicht.



Nein, sind sie nicht. Sonst bräuchte man ja kein J2ME, wenn es identisch mit J2SE wäre  .



mkant hat gesagt.:


> sowie ich das verstanden habe ist j2me nur eine Untermenge von J2SE



Untermenge heißt in diesem Fall:

1.) Ein paar Klassen aus SE wurden übernommen
2.) Diese haben aber teilweise andere und vor allem weniger Methoden
3.) Manche SE Klassen wurden in ME durch andere, ähnliche Klassen ersetzt
4.) Manche SE Klassen (vor allem im GUI Bereich) wurden in ME durch völlig andere Klassen ersetzt
5.) Viele SE Klassen gibt es in ME gar nicht
6.) ME bietet zusätzliche optionale JSRs, mit denen Gerätehersteller zusätzliche Funktionen zur Verfügung stellen können (bspw. Bluetooth oder Dateizugriff)



mkant hat gesagt.:


> und wird auch irgendwann in das J2SE integriert.



Wo hast du das denn her? Wenn überhaupt wird irgendwann - wenn alle mobilen Geräte Leistungsstark genug sind - auf den mobilen Geräten Java SE anstelle von Java ME verfügbar sein.


----------



## mkant (11. Feb 2010)

gibt es noch eine alternative zu j2me?


----------



## The_S (11. Feb 2010)

mkant hat gesagt.:


> gibt es noch eine alternative zu j2me?



Eine Alternative in welcher Hinsicht?


----------



## mkant (11. Feb 2010)

in java Hinsicht? Ne andere java-sdk für windows mobile?


----------



## The_S (11. Feb 2010)

Noch n anderes? Und das soll dann Java SE Kompatibel sein? Evtl. (ich glaub aber nicht dran) gibt es eine normale JRE für Windows Mobile. Aber ansonsten weiß ich von nix.


----------



## mkant (11. Feb 2010)

normale JRE für windows mobile? Kennst nicht zufällig eine?


----------



## The_S (12. Feb 2010)

Noch nie was mit Windows Mobile gemacht, sorry. Glaube aber wie gesagt eher nicht, dass es so etwas gibt.


----------

