Quick’ish way to swap between Java versions on Windows

Here’s a sort of quick way to swap between Java versions on Windows without having to change any environment variables and restarting your console window and such. The short version is to create symlinks to your java versions and then a single symlink called for example ‘active’ which points to the one you want. In your environment variables java_home and path you’d then point to this ‘active’ symlink instead of the actual installation. You can then fairly quickly swap out the target of the ‘active’ symlink and, tadaa’ish, you have a different version.

Setup

  1. Open up an elevated command prompt.
  2. Go/Make somewhere you want this.
    > c:
    > mkdir \dev\java
    > cd \dev\java
  3. Set up the symlinks
    > mklink /d 1.5 "c:\Program Files\Java\jdk1.5.0_22"
    > mklink /d 1.7 "c:\Program Files\Java\jdk1.7.0"
    > mklink /d 1.6 "c:\Program Files\Java\jdk1.6.0_27"
    > mklink /d active 1.7
  4. Set your JAVA_HOME and PATH environment variables. *
    setx JAVA_HOME "C:\dev\java\active" /m
    setx PATH "%JAVA_HOME%\bin;%PATH%" /m
* The second command assumes you don’t have Java in your PATH already. If you do, you should edit it the usual way instead. Also note that if JAVA_HOME is already set, it will be expanded in the second command.

Now open up a new regular command prompt and run the following.

> java -version
> mvn --version

Both (skip mvn if you don’t have maven installed) should report Java version 1.7.

Swapping

So, let’s say we want to change to java 1.5, we just need to run the following in an elevated command prompt.

> cd \dev\java
> rmdir active && mklink /d active 1.5

If you now repeat the version checks we did in our regular command prompt they should both report version 1.5 instead of 1.7. And we didn’t even have to restart the command prompt.

Shortcut

To prevent us from having to do this manually we could also create a simple bat file. I made one I called swap.bat which I put in the same directory as the symlinks with the following contents.

@echo off
cd \dev\java && rmdir active && mklink /d active %~1

You could then create a short cut to for example c:\dev\java\swap.bat 1.5, set it to run as administrator, and you’d have a two click solution to change the Java version to 1.5. I created one shortcut for each version.

If you have a better way, please leave a comment though. Always on the lookout for things and techniques that can make my developer life simpler :)

Default location of pinned Windows Explorer icon on taskbar

On Windows 7 and Windows 8 there is by default a Windows Explorer icon pinned on the taskbar. By default, when you click this, it opens up an Explorer window showing you your Libraries.

I don’t care much about Libraries, and when I do I just access them in the sidebar anyways. I want Computer to be default and found a way to do that at leonmeijer.nl.

  1. Right-click the pinned Windows Explorer icon
  2. Right-click the Windows Explorer item
  3. Select the Properties item
  4. Select the Shortcut tab
  5. Replace the contents of Target with
    %windir%\explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
  6. Click OK

That GUID there is the Windows Class identifier (CLSID) for My Computer.

SpaceSniffer disk usage visualizer

Ever wondered what eats up your disk space? Discovered a nice simple tool which can answer that question. It’s called SpaceSniffer and it scans your disk (or a just folder if you want) and then creates a clean map of what takes up space.

SpaceSniffer screenshot

They also have a YouTube video which shows both basic and some not so basic things you can do with it. Embedded it below, and I suggest you turn down the volume if you don’t like silly porn groove music :P

One thing to note though: I recommend you run it with Administrator privileges. If you don’t, it won’t be able to scan certain system folders and such.

How to completely disable hibernation on Windows

To completely disable hibernation on Windows, open up an elevated command prompt and run the following command:

> powercfg –H OFF

This will both disable hibernation completely and remove the enormous hiberfil.sys from your system.

To enable it again, simply run it again with ON instead of OFF.

> powercfg –H ON

Why disable it? If you never use it, the hiberfil.sys takes up a lot of necessary space. And if you happen to be on a slightly old unstable laptop where the hibernation often fails for weird reasons, it might be nice disable it so there’s not even possible to enter it by accident :)

How to run PowerShell scripts directly from Windows command line

If you find yourself in the regular command line (cmd.exe) on Windows and you’d like to run a PowerShell script, you can do it like this:

> powershell ./example-script.ps1

Would be nice if you could just run it directly as a bat file though, right? And yes, you can! Continue reading

How to disable administrative shares in Windows

You can remove administrative shares by running for example net share c$ /delete, however the shares will be recreated when you reboot. To fully disable them, delete them, stick the following in a new reg file (for example disable_admin_shares.reg ) and run it. When you reboot now they shouldn’t come back :)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters]
"AutoShareWks"=dword:00000000

You can also do it manually by running regedit and setting that key yourself, but who wants that…