Migration der Konfigurationsdateien des m2e-Plugins (Maven Integration for Eclipse)

Mit dem Eclipse-Plugin m2e (m2eclipse) ‚Maven Integration for Eclipse‘ kann man innerhalb von Eclipse die Mächtigkeit von Maven nutzen. Das Plugin ist mit der 1er-Version von Sonartype zu Eclipse umgezogen, wobei vorhandene Konfigurationen nach dem alten Plugin mit der neuen Plugin-Version nicht mehr funktionieren.

Wenn wir ein bestehendes Projekt mit der Konfiguration nach dem alten Plugin haben, müssen wir nur ein paar Einträge in den Eclipse-Konfigurationsdateien ändern, damit das Projekt mit dem neuen Eclipse-Plugin wieder funktioniert. Die folgenden Anpassungen habe ich mit Eclipse Indigo und der m2e-Version 1.0.100.20110804-1717 ausprobiert.

Zunächst müssen wir die .project-Datei anpassen. Dort müssen wir erst einmal den Nature-Eintrag von

<nature>org.maven.ide.eclipse.maven2Nature</nature>

auf

<nature>org.eclipse.m2e.core.maven2Nature</nature>

ändern, damit das Projekt als m2e-Projekt erkannt wird. Dann müssen wir noch den Builder-Eintrag von

<buildCommand>
   <name>org.maven.ide.eclipse.maven2Builder</name>
   <arguments>
   </arguments>
</buildCommand>

auf

<buildCommand>
   <name>org.eclipse.m2e.core.maven2Builder</name>
   <arguments>
   </arguments>
</buildCommand>

anpassen, sodass der korrekte Builder beim Erstellen des Projekts genutzt wird. Damit sollten alle m2e-Funktionalitäten im Eclipse-Projekt wieder verfügbar sein. Allerdings compiliert das Projekt vielleicht noch nicht.

Wir müssen in der .classpath-Datei noch den Eintrag für die Variable MAVEN2_CLASSPATH_CONTAINER anpassen, damit die Java-Librarys von Maven auch eingebunden werden. Dafür ändern wir die Zeile

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>

auf

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>

um. Jetzt sollte in der ‚Package Explorer‘-View ein Library-Eintrag „Maven Dependencies“ mit den entsprechenden Java-Librarys vorhanden sein und das Projekt ohne Fehler compilieren.

Es gibt übrigens hier ein kostenloses Online-Buch zu m2e von Sonartype, das allerhand Tipps im Umgang mit dem m2e-Plugin bietet.

Advertisements

Locale-Fehler bei JiffyBox unter Ubuntu 10.4

Ich finde die JiffyBox von DomainFactory ja klasse (war auch Thema meines ersten Blogartikels). Damit kann man eben schnell einen kostengünstigen Server aufsetzen und einige Sachen ausprobieren. Falls dann etwas schief geht, wirft man die ganze Installation weg und startet mal eben einen neuen Server – alles innerhalb weniger Minuten.

Jetzt bin ich allerdings auf ein Problem gestoßen, das ich vor Monaten nach meiner Meinung nicht hatte. Ich möchte nämlich eigentlich einen neuen Server mit ‚Ubuntu 10.04 LTS 64Bit‘ (Lucid) und PostgreSQL aufsetzen. Das klappte nach einigen Warnungen nicht und letztlich lag es an fehlerhaften Locale-Einstellungen, wie es auch in diesem Link beschrieben wird. Hätte die angegebene Lösung sofort bei mir geklappt, wäre dieser Artikel wahrscheinlich nicht entstanden.

Um das Problem nachzustellen, muss man nicht gleich PostgreSQL installieren, sondern man kann auf dem frisch gestarteten System auch einfach mal einen neuen Benutzer anlegen: adduser myuser

root@j24664:~# adduser myuser
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Weiterlesen

GeoJSON erzeugen mit Java

Bei der Webentwicklung hat sich für den Austausch von Daten zwischen Server und Client das JSON-Format bewährt. Es ist gegenüber XML kompakter, lässt sich trotzdem einfach lesen und wird von JavaScript direkt in verwendbare Objekte umgewandelt. Eine spezielle JSON-Ausprägung für geografische Daten bildet das GeoJSON-Format. Dieses Format wird auch von OpenLayers unterstützt, sodass man keinen umfangreichen JavaScript-Umwandlungscode schreiben muss. Der folgende GeoJSON-Code enthält die Daten mit Geo-Koordinaten für drei Plätze in meiner Heimat:

{ "type": "FeatureCollection", "features": [
{ "type": "Feature", "id": 1, "properties": { "name": "", "image": "playground.png"} , "geometry": { "type": "Point", "coordinates": [8.5864, 52.8988] } },
{ "type": "Feature", "id": 2, "properties": { "name": "Balkan-Restaurant", "image": "restaurant.png"} , "geometry": { "type": "Point", "coordinates": [8.5992, 52.9106] } },
{ "type": "Feature", "id": 3, "properties": { "name": "carpe diem", "image": "hairdresser.png"} , "geometry": { "type": "Point", "coordinates": [8.5873, 52.9079] } }
] }

Wie wird jetzt dieser GeoJSON-Code serverseitig generiert? Da GeoJSON auch normales JSON ist, können wir es genauso generieren, wie wir JSON generieren würden. Manche Sprachen unterstützen die Transformation zwischen Objekten und JSON direkt:

  • JavaScript: JSON.stringify($object) und JSON.parse($string)
  • PHP: json_encode($object) und json_decode($string)

In Java müssen wir selber Code dafür schreiben oder eine entsprechende Bibliothek nutzen. Zum Glück gibt es allerhand Java-Bibliotheken für JSON. Mit den Bibliotheken org.json, json-simple und Jackson habe ich ausprobiert, wie leicht das Erzeugen von JSON mit solchen Bibliotheken von der Hand geht. Das ist nur eine kleine Auswahl von den über 20 auf json.org aufgelisteten Bibliotheken.

Weiterlesen