Skip to content

Play Framework – ExceptionInInitializerError – Workaround für Windows

Benutzer des Play Frameworks wundern sich vielleicht, weshalb der Befehl “play start” auf einem Windows PC nicht mehr funktioniert (zumindest wenn Java >7.0.11 installiert ist).

Üblicherweise erscheint in der Konsole folgender Fehler:

Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at java.lang.System.initializeSystemClass(Unknown Source)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at java.io.Win32FileSystem.<init>(Unknown Source)
    at java.io.WinNTFileSystem.<init>(Unknown Source)
    at java.io.FileSystem.getFileSystem(Native Method)
    at java.io.File.<clinit>(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at java.lang.System.initializeSystemClass(Unknown Source)

Der Grund dafür scheint eine Änderung in der JVM zu sein, welche dazu führt, dass irgendwelche Slashes am Ende von bestimmten Parametern abgeschnitten werden. Gemäss dem Issue tracker vom Play Framework wird der Bug wohl nicht repariert.

Damit man unter Windows trotzdem einen Produktiven Server betreiben kann gibt es folgenden Workaround:

Man startet Play mit folgendem Zusatz:

play -Dfile.separator=\/ start

Viel Spass mit play!

Mac OS X und Antivirus

Seit Jahren existiert das hartnäckige Gerücht, das Macs “sicher” seien und deshalb keinen Antivirus benötigen würden. Dass dies nicht der Fall ist wurde in der Vergangenheit durch Schadprogramme wie “Flashback” demonstriert.

Interessanter weise ist es oftmals gar nicht Mac OS X selber, welches unsicher ist, sondern installierte Software wie die Java Runtime. Speziell bei Java in in letzter Zeit wieder vermehrt Lücken aufgetaucht und Oracle hat gleich zweimal kurz nacheinander einen Notfall-Patch veröffentlicht. Es empfiehlt sich generell Software auf dem neusten Stand zu halten und speziell grundlegende Programme wie Browser und Mail-Clients sowie Framework aller art. Browser und Mail-Programme haben unmittelbar Kontakt mit Schadsoftware, den viele Programme kommen per eMail oder werden durch den Browser heruntergeladen. Manchmal durch zutun des Benutzers (welcher irgendwo klickt wo er nicht sollte) oder automatisch, ohne dass es bemerkt wird, wenn der Schadcode zum Beispiel über ein Java-Applet oder mittels Flash installiert wird. Dass es noch keine grösseren Angriffe auf Apple user gegeben hat, liegt wohl in erster Linie am relativ kleinen Marktanteil den Apple hat. Auf Dauer ist dies aber ein denkbar schlechter Schutz und Antiviren Software gehört auf jeden Computer.

Bei der Software sollte man jedoch wählerisch sein und vorher abklären, was man braucht und was nicht. Viele Antiviren-Hersteller bieten kostenlose Home-Versionen für den Privaten gebrauch. Einzelne finanzieren sich durch die Anzeige von Werbung bei Updates (und können so selber als Ad-ware angesehen werden). Andere machen lediglich auf die anderen Produkte des Herstellers aufmerksam. Ich möchte an dieser Stelle meine drei Favoriten vorstellen:

Little Snitch

Little Snitch ist kein Antviren Programm im eigentlichen Sinn. Little Snitch ist ein Netzwerk-Manager, welcher es erlaubt für jedes Programm festzulegen auf welchen Ports und zu welchen Domains es Verbindungen aufbauen darf. Man kann jeweils Erlaubnis erteilen oder verweigern, wahlweise für alle Verbindungen des jeweiligen Programmes, pro Port oder pro Domain und entweder bis zum Beenden des Programmes oder für immer.

Zu beginn kann dies ein bisschen nervig sein, denn es gibt unglaublich viele Programme die “nach Hause telefonieren” (dem Hersteller informationen zur Benutzung senden) oder auch nur nach Updates suchen. Wie viel man in welchem Fall erlauben will, muss jeder Benutzer für sich selber wissen. Aber speziell wenn ich eine Software nicht kenne tendiere ich dazu Verbindungen (zumindest bis zum 1. mal Beenden) nicht zuzulassen.

Little Snitch ist mit mehr oder wenigen allen Versionen von Mac OS X kompatibel und wird seit 10 Jahren von Östereichischen Entwickler programmiert.

Das Programm kostet 30€ (Updates 15€) und zum ausprobieren kann man die Vollversion 30 Tage kostenlos nutzen.

Sophos Antivirus

Seit einiger Zeit bietet Sophos für Privat-Kunden eine kostenlose Version ihrer Software an. Kompatibel mit Mac OS X 10.4 – 10.8 und stets aktuell. Sämtliche Funktionen wie Live-Scan sind vorhanden. Die Scans laufen relativ schnell und die Erkennungsrate ist gut. Sophos beschränkt sich auf das nötige und macht deshalb den Mac auch nicht unnötig langsam.

Die kostenlose Version kann bei Sophos bezogen werden.

ClamXav

ClamXav ist ein Graphisches Benutzer-Interface für ClamAv. ClamAv wiederum ist ein Opensource Antiviren scanner. Der Funktionsumfang ist nicht so gross wie bei Sophos, denn es lassen sich lediglich die Laufwerke Scannen. “Live Schutz” ist nicht verfügbar, sprich wenn Dateien heruntergeladen werden müssten diese manuell geprüft werden. Die Signaturen bei ClamAv sind tendenziell nicht ganz so aktuell wie bei Sophos, aber es sollte reichen.

Das System wird dafür weniger belastet und wer davon ausgeht, dass eh kein Virus den Mac befällt, wird mit dieser Lösung glücklich sein.

ClamXav gibts im Mac AppStore oder auf der Homepage der Entwickler.

Mouse without Borders alternative für Linux und Mac OS X (und Windows)

Seit einiger Zeit kenne ich “Mouse without borders”. Es dient dazu mehrere Computer mit nur einer Maus und einem Keyboard zu steuern. So weit so gut. Es ist schnell installiert und funktioniert recht zuverlässig (zumindest solange man eine Netzwerkverbindung zwischen den beiden PCs hat). Der einzige Nachteil ist, dass Mouse without borders nur Microsoft’s Betriebsysteme unterstützt, was auch nicht sonderlich verwunderlicht, denn es stammt ja von Microsoft. Es gibt einige kommerzielle Lösungen und vor kurzem habe ich eine funktionierende Open-Source Lösung gefunden: Synergy.

So funktioniert Synergy

Synergy ist ein Opensource Projekt, welches genau gleich wie Microsoft’s Mouse without borders die Steuerung mehrerer PC ermöglicht. Allerdings funktioniert es auch auf Linux und Mac OS X. Der Quelltext ist im Repository verfügbar. Erwähnenswert finde ich, dass das Projekt kostenlos ist, also jeder kann sich das Tool herunterladen und benutzen. Die Entwickler botten jedoch um eine Spende von 1$. Für 10$ bekommt man eine “Stimme” die man einem Bug oder Feature-Request geben kann, welcher dann bevorzugt bearbeitet wird.

Soweit war das noch nicht nötig. Die Software funktioniert zuverlässig und ist relativ einfach zu konfigurieren.

Apache Pivot – Java GUIs Plattformübergreifend

Programmieren an sich ist ja nicht so schwer, sollen die Programme aber auf verschiedenen Plattformen laufen, muss man einige Dinge beachten. Auf der einen Seite muss die Programmiersprache auf allen gewünschten Plattformen unterstützt werden (sprich es muss einen Compiler/Interpreter geben) und es sollten keine Bibliotheken verwendet werden, welche auf “native code” (Code, welcher für ein spezifisches Betriebssystem/CPU programmiert/compiliert wurde) setzen.

Es gibt diverse solcher Sprachen (Python, Java, Ruby, Mono, etc) und jede hat Vor- und Nachteile. Insbesondere wenn man nicht nur Konsolenprogramme schreiben will wird es meistens kompliziert. Frameworks für GUIs arbeiten meist nur auf einem Betriebsystem, da viel betriebsystemspezifischer Code verwendet wird. Deshalb habe war ich schon seit längerer Zeit auf der Suche nach einem GUI Framework, welches dieses Problem löst. Vor ein paar Wochen entdeckte ich “Apache Pivot”.

Apache Pivot ist ein Framework um GUIs für Java zu implementieren, welche auf verschiedenen Plattformen funktionieren. Das GUI wird in einem XML-File definiert. Grundlegende Elemente können so eingefügt werden. Elemente können auch später mittels Java Code hinzugefügt werden. Das Framework funktioniert für normale Programme, Applets und es sollten sich sogar Web-Applikationen erstellen lassen (Die WebApps habe ich aber noch nicht ausprobiert).

Es gibt ausführliche Demos und einfache Beispiele zu allen Komponenten.

Die Java-Programme funktionieren auf Windows, Mac OS X und Linux (im Grunde überall wo eine grafische Oberfläche vorhanden ist und Java unterstützt wird). Die Performance ist sowohl auf Windows als auch auf Mac OS X gut (Linux habe ich nicht so ausführlich getestet). Wenn nicht so sauber programmiert wird reagieren die Programme speziell unter Windows nicht ganz so schnell. Insbesondere bei Buttons, wenn grössere Aktionen ausgeführt werden sollen, muss diese in einem neuen Thread gestartet werden. Wenn da Fehler passieren, reagiert das GUI träge.

Alles in allem gefällt mir das Framework, es ist schnell, einfach zu benutzen und man kann es in bestehende Programme Integrieren (und so langsam zum Beispiel ein SWING-Interface durch Apache Pivot ersetzen).

 

Titan Quest – Immortal Throne: Tag Not Found

Vor kurzem trat bei mir folgendes Problem auf:
Wenn Titan Quest – Immortal Throne gestartet wird, fehlen alle Texte. Im Menu steht “Tag Menu 01″, “Tag Menu 02″, etc. Und es steht überall “Tag not found”. Titan Quest wurde über Steam installiert und eine neu installation löst das Problem leider nicht. Nach langer Suche kam ich auf folgende Lösung:

  • Steam starten
  • Rechtsklick auf “Titan quest” und da auf Eigenschaften.
  • Klick auf das Tab “Lokale Dateien” und da auf “Spieldateien auf Fehler überprüfen”
  • Die Spieldateien sollten nun aktualisiert und geprüft werden. Wenn dies abgeschlossen ist, den selben Vorgang für “Titan Quest- Immortal Throne” wiederholen.
  • Wichtig: Zuerst Titan Quest (nicht die Erweiterung) starten und wieder beenden.
  • Danach: Titan Quest – Immortal Throne starten.

Irgendwann im Jahr 2011 wurde bei Steam das Format umgestellt, in welchem die Spiele gespeichert werden. Wenn man Immortal Throne startet wird es aktualisiert. Da Immortal Throne eine Erweiterung von Titan Quest ist, funktioniert es nur, wenn Titan Quest ebenfalls aktualisiert wurde. Das Prüfen der Spieldateien stellt sicher, dass das Spiel korrekt aktualisiert wird.

Viel Spass beim spielen.

Studentenrabatt bei BRACK

BRACK – ein schweizer Onlineshop für Computer- und Elektronikartikel hat wieder einmal eine Aktion mit Studentenrabatt.
Einfach anmelden, ein Foto der Legi (oder Schülerausweis) hochladen und schon profitiert man vom Rabatt. Wie viel Rabatt man jeweils erhält kann von der Uni abhängen, welche man besucht. Ausserdem muss man in der Schweiz wohnhaft sein.

JNLP – Anwendung kann nicht gestartet werden [Lösung]

Kürzlich hatte ich folgendes Problem:
Ich benutzte eine Java WebStart-Applikation (schon seit längerer Zeit) und von einem Tag auf den anderen konnte das Programm nicht mehr gestartet werden.
Ich erhielt folgende Fehlermeldung:
Anmeldung kann nicht gestartet werden
- Nicht signierte Anwendung fordert uneingeschränkten Zugriff auf das System an
- Nicht signierte Ressource: https://....../asdm.jnlp

Oder Falls man eine englische Anwendung startet:


jnlp: Unable to launch the application
- Unsigned Application requesting unrestricted access to system
- Unsigned resource: https://....../asdm.jnlp

In diesem Fall war es das Konfigurations-Tool einer Cisco Firewall (Cisco ASDM – Adaptive Security Device Manager).
Erstaunlicherweise trat dieses Problem mehr oder weniger zeitgleich auf mehreren PCs auf. Der Grund dafür war ein Problem mit dem Java-Cache (und wahrscheinlich einem Java-Update). Auf jeden Fall löst sich das ganze von alleine wenn man den Java-Cache leert. Eine Anleitung dazu wird auf der Homepage von Java/Oracle zur Verfügung gestellt.

Diese ist allerdings nur für Windows und auf Englisch, deshalb hier eine kurze Zusammenfassung:

Lösung für Windows

  1. Das “Java Control Panel” öffnen.
    • Systemsteuerung -> “Java”
  2. Es sollte sich nun ein Fenster geöffnet haben mit drei Unterteilungen. Bei “Temporäre Internet-Dateien” den Button “Einstellungen…” anklicken
  3. Im neuen Fenster den Button “Dateien löschen” anklicken.
  4. Mit “Ok” bestätigen.

Lösung für Mac

  1. Spotlight: Java-Einstellungen
    • Es öffnet sich nun ein Fenster mit 4 Tabs
  2. Das Tab “Netzwerk” anwählen
  3. Den Button “Dateien löschen” anklicken
  4. Mit “Ok” Bestätigen

 


Stylizer – CSS Editor für Windows

CSS wird heute für jede Homepage verwendet und ist aus dem Internet kaum mehr wegzudenken. Dennoch ist es schwer einen Editor zu finden, welcher einem dabei hilft saubere CSS-Dateien zu erstellen ohne im Chaos zu versinken, denn je grösser die Homepage, desto komplizierter die CSS-Files. Werden nun noch verschiedene Typen von WebApps mit einander vermischt wird es kompliziert.
Deshalb habe ich mich auf die Suche nach einem Editor gemacht, welcher einfach zu bedienen ist, auch einem Laien keine allzu grossen Probleme bereitet und möglichst kostenlos ist.
Die Beste Lösung, welche ich entdeckt habe ist zur Zeit Stylizer. Stylizer ist kostenpflichtig, jedoch gibt es eine Demo- bzw. lightversion, welche für die meisten Anwender genügen sollte. Das spezielle daran: man kann direkt eine Homepage öffnen (eine lokale Datei, eine echte im Internet oder auf einem lokalen Testserver) und die CSS-Files bearbeiten und speichern. Das bearbeiten läuft recht intuitiv und spätestens nach dem zwei-minütigen Intro-Video ist klar wie der Hase läuft.

Ich bin weiterhin auf der Suche nach einem brauchbaren Editor für MacOSX. Zur Zeit benutze ich da TextMate (ein unschlagbarer Texteditor) und Coda (IDE für Homepages). Falls jemand weitere Tipps hat, meldet Euch!

RhodeCode – Source Code Management with mercurial

Für Programmier-Projekte verwende ich schon seit längerer Zeit Mercurial um den Code zu verwalten. Die Repositories wurden jeweils auf meinem eigenen Server gehostet, denn die meisten Anbieter haben Einschränkungen, welche mir nicht gefallen hatten. Z.B. nur eine begrenzte Anzahl closed-source-Projekte pro Account (ausser man bezahlt dafür) oder aber die Server liefen nicht stabil.
Allerdings hatte das selber gehostete System gewisse Nachteile. So war es zwar möglich über das Web-Interface neue Projekte zu erstellen, die Berechtigungen waren aber in der Webserver-Konfiguration “hard coded”. Das heisst via .htaccess mussten neue User hinzugefügt werden und wenn ein User nur auf ein Repository Zugriff haben sollte wurde das ziemlich mühsam. Vor kurzem habe ich nun RhodeCode entdeckt. RhodeCode ist eine WebApp welche mir genau diese Arbeit abnimmt. Es stellt Mercurial-Repositories (und wahlweise auch GIT) zur Verfügung. Die Repositories können per Webinterface konfiguriert werden, Benutzer können erstellt und zugewiesen werden. Es gibt Gruppen und Rollen. Alles was man braucht.
Das Ganze wurde in Python geschrieben und läuft somit Plattformunabhängig. Lediglich unter Windows (wie könnte es anders sein ;)) muss man ein bisschen basteln. Da eines der benötigten Python-Pakete einen Compiler benötigt muss entweder VisualStudio oder “Mingw32″ installiert sein. Mingw32 ist mehr oder weniger eine GCC-Portierung für Windows.
Im Falle von VisualStudio funktioniert die Installation auf anhib. Bei Mingw32 muss Python entsprechend konfiguriert werden:
Python verfügt über “Distutils” welche benutzt werden um entsprechende Pakete zu kompilieren. Um Mingw32 zu verwenden muss die entpsrechende Konfiguration umgestellt werden. Die Datei befindet sich unter PFAD_ZU_PYTHON\Lib\distutils\distutils.cfg (Falls diese Datei nicht existiert, muss eine leere Datei mit diesem Namen erstellt werden.)
Dieser Datei fügt man folgenden Teil an:
[build]
compiler = mingw32

Die eigentliche Installation führt man am Besten gemäss Anleitung aus.

RhodeCode ist auf “Pylons” aufgebaut und kommt mit einem eigenen Webserver daher. Um diesen unter Windows als Dienst zu starten empfiehlt sich WSGISVC. Wenn man mehrere Webserver auf dem selben Server am laufen hat, kommt man dann allerdings kaum darum herum einen Proxy zu verwenden.

Snapseed – Künstlerischen Touch für Photos

Vor kurzem habe ich “Snapseed” von Nik Software entdeckt. Die iPhone App ist kostenlos und quasi als Demo-Version für die Mac Version denkbar. Beide verfügen über die selben Funktionen. Das Interface der Mac App ist jedoch auf die Eingabe via Maus/Trackpad optimiert, wohingegen die iPhone App sich sehr auf den Touchscreen konzentriert.

Grundsätzlich dient Snappseed als Bildbearbeitungs Programm und konzentriert sich auf Fotos. So können bilder  zum einen korrigiert werden (Also Helligkeit und Kontrast, sowie die Wärme der Farben kann eingestellt werden) und zum anderen können Bilder manipuliert werden. Manipulieren heisst in diesem Fall es können diverse “Vintage” oder “Grunge” Effekte ausgewählt werden, welche den immer wieder belliebten Retro-Look ausmachen. Ausserdem können Rahmen hinzugefügt werden, oder es steht ein sogenanter “Tilt-Shift” Effekt zur verfügung, mit welchem nur einzelne Bereiche des Bildes scharf dargestellt werden.

Hier ein Beispielbild welches mit dem iPhone erstellt wurde:

Vorher

Nachher

Falls jemand Interesse hat kann ich noch ein paar weitere Beispiele posten.

Für Screenshots und weitere Infos empfehle ich den Mac App Store:

Snapseed - Nik Software, Inc.

Gemäss http://www.snapseed.com ist eine Version ür Android in Arbeit. Hoffen wir die kommt bald!