Keith's Software and Tutorials Home Page
Knowledge Is Power

How To Run thinkorswim
On A Linux Desktop



We're assuming you have successfully installed the thinkorswim (aka TOS) trading application on your Linux desktop. However, when you try and run it you get the following error:

Oracle JRE 8 Update 11 or later is required to run application.
Please manually update Java and ensure it is the first Java available in your system path.

I applaud TD Ameritrade for developing a Linux version of their trading platform. That's no small thing. E-Trade, Fidelity and Charles Schawb don't offer Linux versions of their trading software. The Linux version of thinkorswim works great but TD Ameritrade's support of it is very limited. I was trying to get thinkorswim to run on a clean install of Mint 19.3 with the Cinnamon desktop when I encountered the above error. The problem?

Oracle JRE 8 is no longer available and thinkorswim
doesn't like newer versions of Oracle JRE or OpenJDK.

Mint 19.3 comes with OpenJDK 11 Java but I found that doesn't work. I then tried installing Oracle JRE 13 (the current supported release at the time) and that didn't work either.

I called thinkorswim tech support and they sent me a document on how to install yet another Java. Following the instructions in this document did not work either (at first). However, adding a couple tweaks to the system environment (along with the instructions in the tech support document) will get you up and running. We'll cover it all step-by-step here.

The first steps involve entering terminal commands to download and install the recommended Java called Zulu-8 from Azul. (Replace the word ubuntu in the following repository command with debian if you are using a Debian desktop. For other distros use equivalent package manager commands.)

Import Azul's public key with the command:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9

Next, add Azul's repository (don't forget the single quote marks):

sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'

Use this command to get the package information from Azul's repository:

sudo apt-get update

Now download and install Zulu-8 Java with the command:

sudo apt-get install zulu-8

As part of the installation Zulu 8 should have been made your default Java installation. To verify this, enter the command:

sudo update-alternatives --config java

and you should see a display similar to this:

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
-----------------------------------------------------------------------------
* 0            /usr/lib/jvm/zulu-8-amd64/jre/bin/java        1084400   auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
  2            /usr/lib/jvm/java-13-oracle/bin/java          1120      manual mode
  3            /usr/lib/jvm/zulu-8-amd64/jre/bin/java        1084400   manual mode

Press <enter> to keep the current choice[*], or type selection number: 


WRITE DOWN THE PATH of your Zulu-8 installation given in the above display. You may need that in a bit.

The key thing to look for is that your Zulu-8 installation is at the top of the list (number 0) with an asterisk. If it's not, you can put it at the top of the list by pressing Zulu-8's corresponding number (number 3 in the above display). It should also have the words auto mode in the far right column. If that's all good you can just press the Enter key.


If (and only if) your Zulu-8 installation is at the top of the list but shows manual mode instead of auto mode you'll need to change its priority number to a value that is higher than all the other priority numbers to set it to auto mode. You can do that with this command:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/zulu-8-amd64/jre/bin/java 1200

replacing the 1200 with a value that is higher than any of your other Java installations.

This is where TD Ameritrade's Linux support ends. You can try running thinkorswim now to see if it runs or if you're still getting the Oracle JRE 8 error. If you're still getting the error you'll need to perform the following steps in order to get the Zulu-8 Java installation location into your system environment.

You'll need to edit your /etc/environment file to add the Zulu-8 installation location your wrote down above to your system path and as an environment variable. To do these things enter the command:

sudo nano /etc/environment

and add the Zulu-8 installation location to the beginning of your PATH followed by a : (that's a colon) and also add a JAVA_HOME environment variable with the Zulu-8 installation location so your /etc/environment file looks similar to this:

PATH="/usr/lib/jvm/zulu-8-amd64/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/zulu-8-amd64/jre/bin"


Note that making these changes to your /etc/environment file makes Java available to all system users. If you want to restrict who has access to Java you have to make similar changes to each users .bashrc file instead of the /etc/environment file. In that case you'd have to enter the following to the end of each user's .bashrc file:

export PATH="/usr/lib/jvm/zulu-8-amd64/jre/bin:$PATH"
export JAVA_HOME="/usr/lib/jvm/zulu-8-amd64/jre/bin"


The $PATH at the end of the first command is just a variable that contains your current system path and that gets appended to your Zulu-8 Java installation path.




Keith's Home Page



Contents, diagrams, and images    Copyright © 2004-2020    Keith Parkansky    All rights reserved.
Certain graphics, symbols, and terms used on this site and in its documents are registered trademarks
of their respective owners and are contained herein for identification purposes only.
No endorsement of this site, its contents, or its documents by these owners is expressed or implied.

LIABILITY
IN NO EVENT WILL KEITH PARKANSKY BE LIABLE TO ANY PARTY (i) FOR ANY DIRECT, INDIRECT, SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR INFORMATION, AND THE LIKE), OR ANY OTHER DAMAGES ARISING IN ANY WAY OUT OF THE AVAILABILITY, USE, RELIANCE ON, OR INABILITY TO USE THE INFORMATION, METHODS, HTML OR COMPUTER CODE, OR "KNOWLEDGE" PROVIDED ON OR THROUGH THIS WEBSITE OR ANY OF ITS' ASSOCIATED DOCUMENTS, DIAGRAMS, IMAGES, REPRODUCTIONS, COMPUTER EXECUTED CODE, OR ELECTRONICALLY STORED OR TRANSMITTED FILES OR GENERATED COMMUNICATIONS OR DATA EVEN IF KEITH PARKANSKY SHALL HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, AND REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, OR OTHERWISE; OR (ii) FOR ANY CLAIM ATTRIBUTABLE TO ERRORS, OMISSIONS, OR OTHER INACCURACIES IN, OR DESTRUCTIVE PROPERTIES OF ANY INFORMATION, METHODS, HTML OR COMPUTER CODE, OR "KNOWLEDGE" PROVIDED ON OR THROUGH THIS WEBSITE OR ANY OF ITS' ASSOCIATED DOCUMENTS, DIAGRAMS, IMAGES, REPRODUCTIONS, COMPUTER EXECUTED CODE, OR ELECTRONICALLY STORED, TRANSMITTED, OR GENERATED FILES, COMMUNICATIONS, OR DATA. USE OF THIS SITE CONSTITUTES ACCEPTANCE OF ALL STATED TERMS AND CONDITIONS.