0

Eclipse: Failed to load the JNI shared library jvm.dll

Neulich wieder auf einem frisch aufgesetztem Windows-System Probleme mit Eclipse gehabt. Beim Eclipse-Start kam folgende Meldung:

Failed to load the JNI shared library „C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll“

Der Fehler kommt daher, dass Eclipse keine passende JDK-Version gefunden hat.
Nur die folgenden funktionierenden Kombinationen konnte ich feststellen:

  • 32-bit OS + 32-bit Eclipse + 32-bit JDK (nur 32-bit)
  • 64-bit OS + 32-bit Eclipse + 32-bit JDK
  • 64-bit OS + 64-bit Eclipse + 64-bit JDK (nur 64-bit)
1

Mausgesten fĂŒr Linux, Windows und Firefox

UrsprĂŒnglich bin ich auf die ganze Sache gestoßen, als ich im Opera die Mausgesten entdeckt habe. Diese sind standardmĂ€ĂŸig in dem Browser aktiv und brauchen keine Erweiterung.
Funktionieren tut das Ganze auf allen Systemen gleich: Man hĂ€lt die rechte Maustaste gedrĂŒckt und fĂ€hrt eine Geste. Diese kann ganz einfach sein und nur in eine Richtung gehen (z.B. nach unten minimiert bei mir das Fenster), oder auch ein komplizierteres Muster sein mit mehreren Richtungswechseln.
Diese Steuerungsmöglichkeiten sind von enormen Vorteil. Ich kann gar nicht verstehen, warum das so unbekannt ist. Ich mag sich nicht mehr missen!
Will man die Gesten auch unter Windows und in jedem Programm nutzen, so kann man hier StrokeIt nehmen. Das Tool ist fĂŒr den privaten Gebrauch kostenlos. Man kann Gesten eigenen Tastaturkombinationen zu weisen und so ziemlich jeden Befehl erwirken. Durch Plugins wird auch Multimediasteuerung und vieles mehr ermöglicht.

Unter Linux kann man zu easystroke greifen. Zuvor minimierte Fenster können sogar per Geste wiederhergestellt werden. Das klappt unter Windows nicht.

Will man im Browser zusÀtzliche Features haben, die Browser spezifisch sind, verwendet man das Firefox Add-on namens All-in-One Gestures (Edit 15.03.2019: gibt es nicht mehr. Benutze jetzt FoxyGestures). Dieses besitzt auch andere schönen Features, wie zum Beispiel die Rocker-Navigation.

0

Visual Studio: Automatisch Build-Nummer erhöhen mit ProjectBuildCounter

Visual Studio kann es von sich aus nicht, die Build-Nummer bei jedem Build automatisch zu erhöhen. Weil es von Hand viel zu mĂŒhselig ist, hab ich mich nach einer Lösung umgesehen und das Tool ProjectBuildCounter gefunden. Dieses ist kostenlos und erhöht je nach Einstellung die Werte innerhalb der Properties\AssemblyInfo.cs-Datei.

Dazu legt man das Tool in den Projekte-Ordner von Visual Studio. (C:\Users\XXX\Documents\Visual Studio 2012\Projects)

Als nĂ€chstes macht man einen Rechtsklick auf das gewĂŒnschte Projekt in Visual Studio -> Properties -> Build Events -> Edit Post-build…

In meinem Beispiel wird die vierte Ziffer (also die Revisions-Nummer) erhöht:

„C:\Users\XXX\Documents\Visual Studio 2012\Projects\ProjectBuildCounter.exe“ „C:\Users\XXX\Documents\Visual Studio 2012\Projects\YYYY\YYYYProperties\AssemblyInfo.cs“ R

Jetzt sollte nach jedem erfolgreichem Build die Änderung zu sehen sein.

Tritt ein Fehler auf, so kann man in den Windows Events nachschauen. Unter Windows 8 musste ich in den Eigenschaften des Tools einstellen, dass es immer als Administrator ausgefĂŒhrt werden soll.

0

Windows 8: Kein Neustart nach Updates

Windows 8 fordert den Benutzer mehrmals auf, nach einem Update neu zu starten. Startet man nicht neu, folgt nach einem 15-Minuten-Countdown der Zwangs-Neustart und alle geöffneten Programme werden geschlossen und ungesicherte Änderungen gehen verloren…

Um dies zu verhindern, kann man in der Registry einfach einen neuen Wert anlegen:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

den DWORD (32-bit)-Wert NoAutoRebootWithLoggedOnUsers mit dem Inhalt 1 anlegen.
Die zwei untersten Ordner WindowsUpdate und AU waren bei mir nicht vorhanden, also diese einfach erstellen.

Jetzt muss man dann doch noch einmal neustarten, sonst greifen die Änderungen nicht… 😉

0

WPF: Fehlende .NET-Version abfangen

Hat man ein C#-Programm in einer neuen .NET-Version erstellt, welche auf einem Client nicht installiert ist, so stĂŒrzt es beim Starten ohne Nachricht ab. Windows meldet dann, dass das Programm nicht mehr funktioniert und fragt ob ein Problembericht gesendet werden soll.
Analysiert man den Fehler, so wird man feststellen, dass eine System.TypeLoadException geworfen wird.

Um ungefangene Exceptions zu behandeln, bietet es sich an Dispatcher.UnhandledException zu verwenden. Dazu in der App.xaml.cs folgendes einfĂŒgen:

public App() : base()
{
    this.Dispatcher.UnhandledException += OnDispatcherUnhandledException;
}

void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
    string errorMessage = string.Format("An unhandled exception occurred. The Programm will close:\n\n{0}", e.Exception);
    MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    e.Handled = true;
    Application.Current.Shutdown();
}

Jetzt wird durch ungefangene Exceptions, eine entsprechende Fehlermeldung angezeigt. Will man speziell fĂŒr den Fall, dass die .NET-Version fehlt, eine Meldung angeben, dann kann man die Exception so weiter prĂŒfen:

if (e.Exception.InnerException is TypeLoadException)
{
    // .NET version is missing
}