Wednesday, July 24, 2013

"Topcoder Arena doesn't work in openJDK 7"

Trying to run the TopCoder arena in Ubuntu? It seems there are issues when not using that piece of evil nastyness called Oracle's Java. Do not fear! We do not need that trash to run the TopCoder arena. OpenJDK 7 is good enough to run the arena.

What doesn't work is the packaged version of the iced tea plugin in Ubuntu. For somre reason, it expects only OpenJDK 6 to exist. So even you have openJDK 7 installed, IcedTea will run openJDK 6 (Even if it is not installed!).

The trick is simply to modify the javaws script. Yep, it turns out it is just a script.

You need:

  • OpenJDK 7
  • IcedTea plugin
  • Unless you really, really need it, you should really get rid of Java 6, it is not only old, it is insecure and will interfere with your attempts to make sure to use Java 7.

sudo nano /usr/bin/javaws

The beginning of that file says this:

#!/bin/bash

JAVA=/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:/usr/share/icedtea-web/netx.jar"
LAUNCHER_FLAGS=-Xms8m
CLASSNAME=net.sourceforge.jnlp.runtime.Boot
BINARY_LOCATION=/usr/bin/javaws

Just change it to :

#!/bin/bash

JAVA=/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:/usr/share/icedtea-web/netx.jar"
LAUNCHER_FLAGS=-Xms8m
CLASSNAME=net.sourceforge.jnlp.runtime.Boot
BINARY_LOCATION=/usr/bin/javaws

The good news is that this works. The bad news is that you need to edit the javaws script every single time icedtea plugin is updated by the update-manager.

No comments :