FreeMind won't run even with OpenJDK JRE installed

I installed FreeMind from USC Ubuntu 12.04, but it failed to run with the following error:

[warning] /usr/bin/freemind: No java runtime was found
[error] /usr/bin/freemind: Unable to find an appropriate java runtime. See java_wrappers(7) for help"

OpenJDK Java 6 runtime was installed.

Asked By: Husni

||

Run update-alternatives --config java and make sure you configure it correctly.

Run java -version in a terminal and see the output.

From freemind web: http://freemind.sourceforge.net/wiki/index.php/Download

Freemind may not work with OpenJDK. I would recommend installing Sun/Oracle JRE/JDK.

A simple way of installing it on Ubuntu (build .deb packages from OTN binaries and set up a local repository, use apt-get to install;-)
Check it out here: https://github.com/flexiondotorg/oab-java6

Answered By: Terry Wang

On Ubuntu 12.04/GNOME Shell with FreeMind 0.9.0 installed from the Ubuntu repository, this is what I got:

freemind
[warning] /usr/bin/freemind: No java runtime was found
[error] /usr/bin/freemind: Unable to find an appropriate java runtime. See java_wrappers(7) for help

java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java   12        auto mode
  1            /usr/lib/jvm/java-7-oracle/bin/java       4         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java   12        manual mode

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

whereis java
java: /usr/bin/java /usr/bin/X11/java /usr/share/java /usr/share/man/man1/java.1.gz
ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 May 16  2012 /usr/bin/java -> /etc/alternatives/java

Actual Path:
ls -l /usr/lib/j*
/usr/lib/java-wrappers:
total 20
-rwxr-xr-x 1 root root 1033 Apr  2  2011 get-classpath
-rw-r--r-- 1 root root 9122 Jan 12 15:42 java-wrappers.sh
-rw-r--r-- 1 root root 2302 Jan 12 15:41 jvm-list.sh

/usr/lib/jvm:
total 4
lrwxrwxrwx 1 root root   26 Sep  6 11:56 default-java -> /usr/lib/jvm/java-7-oracle
drwxr-xr-x 8 root root 4096 Dec 13 12:37 java-7-oracle

Troubleshoot:
"/usr/lib/java-wrappers/jvm-list.sh" has the below setting, which is correct path.

#va-wrappers(7) default runtime
__jvm_default="/usr/lib/jvm/default-java/"

The errors are coming from /usr/lib/java-wrappers/java-wrappers.sh, which doesn’t seem to be loading the below from within its file.

# Import the list of JVMs
. /usr/lib/java-wrappers/jvm-list.sh

I changed it to:

./usr/lib/java-wrappers/jvm-list.sh

but it did not work.

Solution:

This is what worked after trial and error by adding the below in the /usr/lib/java-wrappers/java-wrappers.sh file, under where it is trying to find,

if [ -z "$JAVA_HOME" ]; then, at line 90 in vi for me.

#DIRS=""
        # Added 2013-01-12 not being found from jvm-list
        DIRS="$__jvm_default"
        #DIRS="/usr/lib/jvm/default-java"

I commented out DIRS="" variable and changed it to

DIRS="$__jvm_default"

or

DIRS="/usr/lib/jvm/default-java"

Both of them worked.

Answered By: Vincent Williams

For Sun Java 1.6

Change file /usr/lib/java-wrappers/jvm-list.sh

Change the following entry:

__jvm_sun6="/usr/lib/jvm/java-6-sun /usr/lib/j2*1.6-sun"

to:

__jvm_sun6="/usr/lib/jvm/java-6-oracle /usr/lib/j2*1.6-oracle"
Answered By: Rafal

For me, the method sudo update-alternatives --config java does not work.
I found a solution here on Launchpad.

In short, you can try export JAVA_CMD=/usr/bin/java in Terminal.

You can put this command into system environment variables by creating the file "/etc/profile.d/java.sh" with the content:

export JAVA_CMD=/usr/bin/java
Answered By: ppppplv

I had this problem in Ubuntu 15.04 with the newest Oracle Java 8 (with no other JDK installed). I found the problem in the java-wrappers file which determines the available Java installations:

In file /usr/lib/java-wrappers/jvm-list.sh, I added /usr/lib/jvm/java-8-oracle on line 35:

__jvm_oracle8="/usr/lib/jvm/java-8-oracle /usr/lib/jvm/jdk-8-oracle-* /usr/lib/jvm/jre-8-oracle-*"

As the current installation of Oracle 8 Java is installed in this added path.

Answered By: minni

Ok, I found a more simple answer. I am running Ubuntu 14.04, off a fresh install (installed last night). I dropped in Oracle Java 8 using the instructions found here: Install Oracle 8 Java in Ubuntu

Then I installed Freemind from the software center and got the exact error in the originating post. To fix the problem I did this:

I edited the following file AS ROOT (but you can use your editor of choice, gedit works just fine if you want):

sudo vim /usr/bin/freemind

I added this line before the first "if" statement (for me line 18, but yours may be different)

export JAVA_CMD=/usr/bin/java

Now when I click on the Freemind Icon in Unity it works.

Enjoy!

Answered By: taggedzi

This seems to be an ongoing issue. I’m on Ubuntu 22.04 and freeplane (successor of freemind) requires Java 8 (/usr/bin/freeplane starting line 125):

if [ -r /usr/lib/java-wrappers/java-wrappers.sh ]
then # the Debian method
        . /usr/lib/java-wrappers/java-wrappers.sh
        require_java_runtime java8                  # <----
else
        findjava
        if [ $? -ne 0 ]
        then
                exit 1
        fi
fi

Conclusion: we must have any Java appear as pseudo-Java 8 below here.

As I have /usr/lib/java-wrappers/java-wrappers.sh, it loads /usr/lib/java-wrappers/jvm-list.sh. That file contains a bunch of assignments to various Java-versions and -flavours. With only Java 17 installed I wanted to see if freeplane would work with it. I could edit either file to get things to work, but I thought that modifying jvm-list.sh would make it available to other applications, too. So I

$ sudo vi /usr/lib/java-wrappers/jvm-list.sh

and added

__jvm_openjdk17="/usr/lib/jvm/java-17-openjdk-$__arch /usr/lib/jvm/java-17-openjdk"
__jvm_openjdk8="$__jvm_openjdk17"

somewhere after the existing assignment __jvm_openjdk8=....

freeplane seems to work fine with it.

Bottom line: you can probably do this with other Java-versions/-flavours, too. Just make sure that the directories you use are correct and you assign it to the variable of a version that /usr/bin/freeplane refers to, i.e. replace "8" and "17" with whatever your situation requires.

Answered By: sjngm
Categories: Answers Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.