nullpointer.at Entwicklung, Fotografie und mehr

1Apr/120

Java 7 Compiler in Maven

Verfasst von

Lang ist’s her dass ich hier was technisches gebracht hab. Die Fotographie und einige private Dinge haben mich davon ab gehalten. Doch die Zeit der dürre ist vorbei, ich hab wieder begonnen meine Erfahrungen für den Blog festzuhalten :D

Möchte man Java 7 in einem Maven Projekt verwenden muss man dem Maven Compiler Plugin das auch mitteilen. Dieses würde atm. ansonsten versuchen das Projekt mit gutem alten Java 5 zu bauen.

Dazu muss das Plugin über folgende Angaben in der pom.xml umkonfiguriert werden:

<build>
    
    <plugins>
        
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-compiler-plugin</artifactid>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showdeprecation>true</showdeprecation>
                <showwarnings>true</showwarnings>
                <executable>${env.JAVA_7_HOME}/bin/javac</executable>
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

Natürlich muss der Entwickler dafür die Umgebugnsvariable JAVA_7_HOME auf den Rootordner des JDKs der Version 7 linken.

Weitere Infos gibts auf der Seite des Maven Compiler Plugin. Unter Examples gibt es auch den Punkt “Compile Using A Different JDK” der die Vorgehenswiese dabei analog beschreibt. Dabei wird auch eine Möglichkeit aufgezeigt wie der Entwickler den Path JAVA_7_HOME in seiner Maven settings setzen kann.

Have Fun mit Java 7

Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

More Posts - Website

Follow Me:
TwitterGoogle PlusFlickr

Ähnliche Artikel:

27Nov/110

Java Quiz

Verfasst von

Ich hab im Internet ein paar kleine Java Quiz gefunden, glaub über Dzone, die für ein paar Minuten eine nette Abwechslung sind. Dabei hat man eine gewisse Zeitspanne Zeit auf eine Frage alle möglichen Antworten zu tippen.

Can you name the primitive data types from the Java programming language? in 2 Minutes

http://www.sporcle.com/games/Boarder/Primatives

ok, als Java Entwickler nicht schwer. Man kann das eher als Kampf gegen die Uhr ansehen. Und als Muntermacher für den nächsten Test

Can you name the Java keywords? in 5 Minutes

http://www.sporcle.com/games/robv/java_keywords

Arg - 50 Stück sind das? - Hab ich schon lange nicht drüber nachgedacht. Die Keywords sind so selbstverständlich im Alltag, dass einem das meiste als solches gar nicht bewusst ist und man sich regelrecht dafür anstrengen muss. Der Test zeigt einem aber was man häufig verwendet und was nicht. Denn genau diese haben mir am Schluss auf die 50 gefehlt. Mit 43 Stück bin ich aber mal besser dran als ich zu Beginn des Tests befürchtet habe. Wobei ich eins davon sogar einfach nicht richtig schreiben konnte. :D Und das schlimmste, eines davon kannte ich noch nichtmal. Shame on me! Aber das hab ich nun nachgeholt.

So manche Reaktion aus den Comments hab ich schon in Natura bei Freunden gesehen "Ich kann nicht glauben dass ich ... vergessen hab" (jaja, ich spoiler euch jetzt nicht :D)

Man lernt eben nie aus!

Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

More Posts - Website

Follow Me:
TwitterGoogle PlusFlickr

Ähnliche Artikel:

23Okt/110

Builder Pattern

Verfasst von

Ich möchte heute das Builder Pattern vorstellen. Dieses Pattern erleichtert das Erzeugen von Objekten mit einer Vielzahl von Variablen. Anstatt für verschiedene gesetzte Variablen unterschiedliche Konstruktoren mit einer großen Menge an Parametern zu schreiben nutzt man den Ansatz der Verkettung. Mittels einer statischen inneren Klasse regelt man die Erzeugung einer Instanz der äußern Klasse.

Diese innere Klasse, der Builder, enthält Pflichtvariablen die über den Konstruktor der inneren Klasse gesetzt werden. Optionale Variablen, versehen mit Default-Werten, werden über verkettete Methodenaufrufe befüllt. Verkettet bedeutet dass die Methode jeweils das Objekt auf dem es aufgerufen wird zurückgibt. Abschließend wird die build() Methode aufgerufen. Diese returniert ein Objekt der äußeren Klasse, indem es dem Konstruktor der außeren Klasse eine Referenz auf sich selbst übergibt.

Möchte man ein unveränderliches Objekt der äußeren Klasse erzeugen, deklariert man den Konstruktor der äußeren Klasse privat und bietet keine setter Methoden. Die Variablen werden außerdem final gesetzt. Somit hat man ein immutable Objekt. Dadurch kann nur die innere Klasse, der Builder, eine Instanz des Objekts erzeugen und verändern.

public class ObjectToCreate {
	private final String a;
	private final int b;
	private final int c;
	private final String d;
	private final boolean e;
	private final int f;

	private ObjectToCreate(Builder builder) {
		// private Constructor can only be called from Builder
		this.a = builder.a;
		this.b = builder.b;
		this.c = builder.c;
		this.d = builder.d;
		this.e = builder.e;
		this.f = builder.f;
	}

	public String getA() {
		return a;
	}

	public int getB() {
		return b;
	}

	public int getC() {
		return c;
	}

	public String getD() {
		return d;
	}

	public boolean isE() {
		return e;
	}

	public int getF() {
		return f;
	}

	public static class Builder {
		// Pflichtfelder
		private final String a;
		private final int b;
		// Optional
		private int c = 0;
		private String d = "default";
		private boolean e = true;
		private int f = 0;

		public Builder(String a, int b) {
			this.a = a;
			this.b = b;
		}

		public Builder c(int c) {
			this.c = c;
			return this;
		}

		public Builder d(String d) {
			this.d = d;
			return this;
		}

		public Builder e(boolean e) {
			this.e = e;
			return this;
		}

		public Builder f(int f) {
			this.f = f;
			return this;
		}

		public ObjectToCreate build() {
			return new ObjectToCreate(this);
		}
	}
}

Das wollen wir natürlich auch noch testen

public class ObjectToCreateTest {
	public static void main(String... args) {
		ObjectToCreate.Builder builder = new ObjectToCreate.Builder("String", 1);
		ObjectToCreate o = builder.c(2).d("uiuiui").e(false).f(3).build();
	}
}

Happy building!

Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

More Posts - Website

Follow Me:
TwitterGoogle PlusFlickr

Ähnliche Artikel:

  • Noch keine vorhanden.
2Okt/110

Eclipse Source Vervollständigung “No Default Proposals”

Verfasst von

Schneller Tip zur Verwendung von Eclipse. Sollte die Auto-Vervollständigung nicht funktionieren (wie bei mir bei Eclipse 4.0) könnten im Editor einfach die Standardvorschläge für Java deaktiviert sein.

Unter 'Windows > Preferences > Java > Editor > Content Assist > Advanced' entweder die Default Optionen wieder herstellen oder ein Häkchen bei Java Proposals setzen.

Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

More Posts - Website

Follow Me:
TwitterGoogle PlusFlickr

Ähnliche Artikel:

18Sep/110

Split – Einen String mit der Pipe | spalten?

Verfasst von

In Java einen String spalten ist keine große Hexerei, die String Klasse selbst liefert die dafür vorgesehene Funktionalität frei haus:

String#split(String seperator)

Ich hab bewusst nicht den selben Bezeichner für den Parameter gewählt wie in der API angeschrieben, denn das ist der flotte Blick den Programmierer auf diese Methode zu haben scheinen. Man gibt einen Seperator an und der String wird entsprechend aufgesplittet

String s = "Franz,Heinz,Sepp,Josef,Martin,Lukas,Jonas,Holger,Alexander";

Diesen String würde man zB folgendermaßen in die einzelnen Vornamen aufsplitten:

String[] vornamen = s.split(",");

Funktioniert einwandfrei, was jedoch wenn die Vornamen wie folgt aufbereitet sind:

String p = "Franz|Heinz|Sepp|Josef|Martin|Lukas|Jonas|Holger|Alexander";

Geht man hier nach obrigem Schema vor

String[] vornamen_pipe = p.split("|");

Splittet er den String nach jedem einzelnen Zeichen. Warum? Der eigentliche Funktionsaufruf den wir hierbei durchführen ist String#split(String Regex). In einer Regular Expression steht die Pipe für "oder". In diesem speziellen Fall ist also der Befehl: Teile den String p bei null oder null. Mehr über Regular Expressions gibts z.B. hier

Man muss sich hierbei mit einem Escape Zeichen helfen, damit die Regular Expression die Pipe als Zeichen wertet und nicht als Syntax. Dies wäre mit dem Backslash zu erreichen:

\|

Damit wird in der Regular Expression nach einer Pipe gesucht. Würden wir die Regex zB über eine Konsole abfragen wären wir hier fertig. Da wir diese jedoch mit in den Code compilieren schreitet zuerst der Java Compiler ein und Übersetzt für sich dass hier eine Pipe gemeint ist, sprich \| wird für ihn zu | - diese wird dann erst als Regex ausgewertet und wir laufen in den selben Fehler wie zuvor, daher müssen wir auch noch den Backslash escapen:

String[]vornamen_pipe_ok = p.split("\\|");

Und schon erfolgt der Split wie gewünscht.

Happy splitting

Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

More Posts - Website

Follow Me:
TwitterGoogle PlusFlickr

Ähnliche Artikel: