FreeMind on Linux

From FreeMind
Revision as of 09:09, 16 July 2005 by Ewl (talk | contribs) (added java.lang.NullPointerException from gcj)
Jump to navigationJump to search
 

Installation

Java installation

FreeMind is a Java program, hence you need Java to make it work. There is the "Java runtime engine" (JRE or J2RE) required to run (use, start) FreeMind, and there is the "Java Development Kit" (JDK or J2DK) if you want to compile FreeMind.

If you don't know what compile means, then you need only the JRE. In the following lines, I will concentrate on making FreeMind run and the JRE installation.

From the distribution's RPM package

It's probably the easiest way:

  1. start the software or package installation manager of your distro (e.g. YaST under SuSE),
  2. search for java, JRE or J2RE,
  3. choose (one of) the package providing the JRE,
  4. install the chosen package (plus dependencies),
  5. and quit the software manager.

It may be that the package for Java is already installed or doesn't exist, but then the software manager will tell you. In the first case, you can install FreeMind  ; in the 2nd case, you can try the next section.

From Sun's RPM package

On Fedora Core 2 and Mandrake, it looks like there is no 'native' Java package, hence installing the one from Sun seems to be the standard procedure:

  1. go to http://java.sun.com/j2se/1.4.2/download.html
  2. click on the link Download J2SE JRE
  3. accept the license agreement if you do agree with it.
  4. Download the file marked RPM in self-extracting file
  5. unpack it (with an example filename):
   $ sh j2re-1_4_2_06-linux-i586-rpm.bin
  1. and then install the so created file as root user:
   # rpm -Uvh j2re-1_4_2_06-linux-i586.rpm

You're done (there are more detailed Instructions on the Sun page)!

Some additional notes:

  • if you plan to do some Java development, you can alternatively install the JDKpackage, it provides as well the Java runtime engine.
  • I've shown Java 1.4.2 as example, it looks like Java 1.5 aka 5.0 works as well but I haven't tested it yet, comments are welcome.
  • you can of course install and download the Linux self-extracting file (i.e. not the RPM), but that's not the recommended way, as you loose the dependency checks (and the FreeMind RPMs won't install properly).

Further RPM alternatives

  • Personally, on my SuSE 8.2 system, I have used the "Blackdown J2SDK" package from PackMan to create my own Java RPMs. It was pretty easy.
  • The JPackage Project offers as well JRE and JDK packages in the non-free section, but I haven't tried them yet.

On a Debian system

As Java isn't really free or open, there is no official Debian package for it. The procedure is hence to install java-package from the unstable contrib section, e.g. with

   # apt-get install java-package

Read the instructions delivered with the package, and create your own little Java package(s).

Download the Java Runtime Environment (JRE) from Sun (Linux self-extracting file), called something like j2re-1_4_2_07-linux-i586.bin or jre-1_5_0_02-linux-i586.bin. Use the command from the java-package called make-jpkg along with fakeroot as so:

   # fakeroot make-jpkg sun-j2re1.4.bin

noting that the filename depends on your version. When you have this, you can

   # dpkg -i sun-j2re1.4.deb
Note
The package sun-j2re1.4debian is no longer needed in recent versions of java-package.

On a Gentoo system

To ensure you are up-to-date in portage:

 emerge sync (or emerge-websync)

To make sure you know what is going to install, use the --ask flag to emerge. Answer `yes' if you want to emerge dependancies:

 emerge --ask app-misc/freemind

FreeMind installation

We come now to the interesting part, the installation of FreeMind itself.

All the files we speak about here, are to be downloaded from the Files section on the FreeMind Sourceforge Project Page.

On an RPM system

Download the correct RPM file from the Files section, choose the one which fits best your system:

  1. freemind-0.7.1-6.noarch.rpm for SuSE systems (tested on 8.2, 9.0 and 9.1).
  2. freemind-0.7.1-6mdk.noarch.rpm on Mandrake systems (tested on 10.0).
  3. freemind-0.7.1-6notsuse.noarch.rpm on all other systems (tested on Fedora Core 2).

(the version might change, but the release postfix should remain)

Then, as root, install the package:

   # rpm -Uvh freemind-...noarch.rpm

Done!

Note
the RPMs offered might not work with your specific system, then your best chance is to download the RPM from the same Files section and rebuild it. It's more for advanced users, so I don't go here into details. You will need the JDK and ant to be successful (have a look at man rpmbuild if you don't come further).

On a Debian system

From the Files section, download the .deb file called something like freemind_0.7.1-3_all.deb and install it as root:

   # dpkg -i freemind_0.7.1-3_all.deb

That was the hard way. The comfortable way is to add the following lines to your /etc/apt/sources.list:

   deb http://eric.lavar.de/comp/linux/debian/ unstable/
   deb-src http://eric.lavar.de/comp/linux/debian/ unstable/
Note
you can replace unstable/ by experimental/ if you want to have a try at top-notch not yet fully tested packages. I'm happy about any beta tester.

Or since FreeMind has become an official contrib Debian package:

   deb http://ftp.XX.debian.org/debian unstable main contrib non-free
   deb-src http://ftp.XX.debian.org/debian unstable main contrib non-free
Note
XX has to be replaced with the nearest country code (e.g. de for Deutschland, fr for France,...; check the Debian worldwide mirror sites list).

and call as root the two following commands:

   # apt-get update
   # apt-get install freemind

(it's more comfortable because, each time you call "apt-get upgrade", you'll get automatically the new freemind package)

Note
with the second method, you can get as well the sources for the .deb package using "apt-get source freemind".

On a Gentoo system

I never used and don't plan to use Gentoo (which is most probably a wonderful distribution, but I've got enough distros running for my pleasure :-) ). Nevertheless anonymous said on some mailing list:

   Freemind is setup on portage for gentoo
   
       emerge app-misc/freemind
   
   bang 
   zap
   done

So, you know it...

On any UN*X kind of system (also Linux)

Download the file called something like freemind-bin-0_7_1.zip, create somewhere a sub-directory and unpack there the file (as normal user or root, depending where you created the sub-directory:

   $ unzip freemind-bin-0_7_1.zip
   $ chmod +x freemind.sh

You're done!

Starting FreeMind

Installed from RPM or DEB package

Just type "freemind" in a console or an Alt+F2 command line, you're normally done. There should also be a menu entry under "Applications" in KDE and GNOME (under Debian, in any window manager).

Installed from ZIP file

Type the full path of the installation directory in a console or an Alt+F2 command line to start freemind.sh, e.g.:

    $ /some/directory/path/freemind.sh

You will need to create your own menu entry if you need it.

Frequently and less frequently Asked Questions

I can't paste branches copied from FreeMind into other applications

Try to use the middle mouse button to paste the content copied from FreeMind.

Under KDE, you can use klipper and set the option "Synchronize contents of the clipboard and the selection", so that you can also use Ctrl+V or Shift+Ins to paste.

I want to add an icon for my Link to FreeMind on my Desktop, is there one?

Not in the ZIP file, you'll need to download and unpack the source file, there you'll find a file freemind/images/FreeMindWindowIcon.png that you can copy somewhere and use as desktop icone.

When starting FreeMind, it says "java: command not found". What's wrong?

It's a problem from Fedora Core, Mandrake and the Java Sun RPM, which neither add the java command to the PATH nore defines properly the variable JAVA_HOME.

Add the following two lines to one of the startup scripts (/etc/profile and/or /etc/bash.bashrc for all users, or $HOME/.profile and/or $HOME/.bashrc only for you):

   export PATH=$PATH:/usr/java/j2re1.4.2_04/bin
   export JAVA_HOME=/usr/java/j2re1.4.2_04

(the part in italic depends on your installation)

Note
if you've installed FreeMind from a package, you can alternatively use the solution under #How_can_I_make_FreeMind_use_a_specific_Java_Virtual_Machine.3F.

Why do I get a "No print service found" whenever I attempt to print?

At least up to version 1.4, the java runtime under Linux is using the BSD printing system (also known as the lp commands, or old lp). Most modern distributions offer the CUPS printing system, which needs a compatibility layer to work with Java:

  • Under SuSE 8.2, the package required is called cups-client
  • Under Debian, it's called cupsys-bsd.

Install this package and you should be able to print from FreeMind.

If CUPS is not installed on your system, it is easier to install the traditional lpr/lpd system. On Debian, the package is just lpr, apt-get install lpr should be enough.

Note
it looks like Java 1.5 is supporting CUPS directly.

I get an error java.lang.NoClassDefFoundError or java.lang.NullPointerException when starting FreeMind

When trying to start FreeMind from a console, you get the following error messages and FreeMind doesn't start:

./lib/freemind.jar 
java.lang.NoClassDefFoundError: javax/swing/JFrame 
at java.lang.ClassLoader.defineClass0 (ClassLoader.java) 
at java.lang.ClassLoader.defineClass (ClassLoader.java:179) 
at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:33) 
at kaffe.lang.AppClassLoader$JarSource.findClass (AppClassLoader.java:143) 
at kaffe.lang.AppClassLoader.findClass (AppClassLoader.java:291) 
at java.lang.ClassLoader.loadClass (ClassLoader.java:142) 
at java.lang.ClassLoader.loadClass (ClassLoader.java:121) 
at kaffe.jar.ExecJarName.main (ExecJarName.java:55) 
at kaffe.jar.ExecJar.main (ExecJar.java:75)

or

update UI not overwritten in class: 
javax.swing.JLayeredPane[0,0,0x0,invalid,translucent,alignmentX=0.0,alignmentY=0.0,border=,maximumSize=java.awt.Dimension[width=2147483647,height=2147483647],minimumSize=java.awt.Dimension[width=0,height=0],preferredSize=java.awt.Dimension[width=0,height=0]] 
[Freemind-Developer-Internal-Warning (do not write a bug report, please)]: Tried to get view without being able to get map module. 
Exception during event dispatch: 
java.lang.NullPointerException 
at javax.swing.plaf.basic.BasicComboBoxEditor.setItem(java.lang.Object) (/usr/lib/libgcj.so.6.0.0) 

This is because you use kaffe (the same applies to libgcj, sablevm and a few others), which doesn't offer all features of Sun's Java. Blackdown's Java do es as well work, I would have doubts on any other implementation (beside perhaps IBM's one). So, remove this Java version and install a version from Sun or Blackdown.

Note
if you've installed FreeMind from a package, you can alternatively use the solution under #How_can_I_make_FreeMind_use_a_specific_Java_Virtual_Machine.3F.

While installing a FreeMind package, it complains Java isn't installed, though I've installed it and Java programs do work

You've probably installed Java manually, and not from an RPM resp. DEB package. This means that the FreeMind RPM resp. DEB package can't know that Java is installed.

Three solutions (from better to worse):

  • Install Java from an RPM or DEB package and retry to install the FreeMind package.
  • Install FreeMind using the ZIP file.
  • Install the FreeMind package by ignoring the missing dependencies, e.g.:
   # rpm -Uvh -nodeps freemind....noarch.rpm

While installing a FreeMind RPM package, it complains Java isn't installed, though I've installed it from an RPM package

You've probably installed the JDK package from Sun, which provides also a JRE but doesn't say it. Your best chance is to install the dummy package j2sdk-provides-j2re-1.4.2-2.noarch.rpm. The source package is available as well.

How can I make FreeMind use a specific Java Virtual Machine?

If you've installed FreeMind from a package, you can make it use a different Java virtual machines than other programs by adding lines similar to the 2 following ones to /etc/freemind/freemindrc, for all users, or to $HOME/.freemind/freemindrc, for you, so that only FreeMind is impacted (and no other program):

   export PATH=$PATH:/usr/java/j2re1.4.2_04/bin
   export JAVA_HOME=/usr/java/j2re1.4.2_04

(the part in italic depends on your installation)

Why doesn't the rebuild of the SRPM work under Fedora Core 2

During rebuild of the RPM, lines similar to the following do appear and the build fails:

compile:
   [mkdir] Created dir: /usr/src/redhat/BUILD/freemind-0.7.1/bin/classes
   [javac] Compiling 92 source files to /usr/src/redhat/BUILD/freemind-0.7.1/bin/classes
   [javac] /usr/src/redhat/BUILD/freemind-0.7.1/freemind/freemind/modes/MindMapLinkRegistry.java:38:
                                                                    error: '{' expected.
   [javac]        };
   [javac]         ^
   [javac] /usr/src/redhat/BUILD/freemind-0.7.1/freemind/freemind/modes/MindMapLinkRegistry.java:40:
                                                                                  error:
Public interface `freemind.modes.ID_Blank' must be defined in a file called `ID_Blank.java'.
   [javac]        public interface ID_Blank extends ID_BasicState {};
   [javac]                         ^

The ant package delivered with Fedora Core 2 seems to be broken (version is 1.5.2, but my ant version is 1.5.1 and it works). Installing ant (and dependencies) from the JPackage Project seems to solve the problem.

Under Fedora Core 3, Java complains in libawt.so about missing libXp.so.6

The exact error message is:

Exception in thread "main" java.lang.UnsatisfiedLinkError:
/usr/lib/jre/lib/i386/libawt.so: libXp.so.6:
cannot open shared object file: No such file or directory

In this case install the package xorg-x11-deprecated-libs-6.8.1-12.i386.rpm, e.g. using yum, this should solve the problem.

Troubleshooting

Most people seem to think that, because you're relatively knowledgeable, they can tell you that something doesn't work, and you will be able to find out the solution, just like this!

Well, that's not exactly like this: first, I need to understand what the problem exactly is, and then I can try to solve it, especially if I've already seen and solved the problem. Think about your mechanic at the garage, if you give him a call and tell him "my car doesn't start" or "something is wrong with my car", would you expect him to tell you right away "Oh, yes, that's the plugs!". Most probably, he will ask to come by. Well, that's exactly the same here, I can't ask you to come by, but if you want good help, you'll need to give good information.

It's easier than you might thought, just do the following steps, that should give us a good start:

  • start a console, e.g. use Alt+F2, and type xterm or konsole or rxvt.
  • in the console, type the following statements:

On an RPM based system:

       DEBUG=1 freemind
       (quit freemind)
       /usr/bin/java -version
       rpm -qa | grep -i j
       rpm -qa | grep freemind
       env | grep -i j

On a Debian based system

       DEBUG=1 freemind
       (quit freemind)
       /usr/bin/java -version
       dpkg -l \*j\*
       dpkg -l freemind\*
       env | grep -i j
Note
You should see which java command is used, e.g. "/usr/bin/java", from the debug output of the freemind command.

The result should look somewhat like this (error messages are OK, I like error messages!):

alice@wonderland:~> DEBUG=1 freemind
DEBUG:   Freemind parameters are .
DEBUG:   Using $PATH to find java virtual machine.
DEBUG:   Using '/usr/bin/java' as java virtual machine...
DEBUG:   Freemind Directory is '/usr/share/freemind'.

Looking for user properties:
/home/ericl/.freemind/user.properties

User properties not found. It will be automatically created.
Done.
Default (System) Look & Feel: javax.swing.plaf.metal.MetalLookAndFeel
[Freemind-Developer-Internal-Warning (do not write a bug report, please)]:
                   Tried to get view without being able to get map module.

alice@wonderland:~> /usr/bin/java -version
java version "1.4.2-rc1"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.4.2-rc1)
Java HotSpot(TM) Client VM (build Blackdown-1.4.2-rc1, mixed mode)
alice@wonderland:~> rpm -qa | grep -i j
eject-2.0.13-26
joystick-2002.10.30-38
libjpeg-6.2.0-530
joe-2.9.8-179
jfsutils-1.1.1-25
jpilot-devel-0.99.6-0.pm.1
jpeg-6b-530
jhead-2.0-2
taskjuggler-1.4.2-10
j2sdk-provides-j2re-1.4.2-2
libjasper-1.600.0-75
jpilot-0.99.6-0.pm.1
jakarta-ant-1.5.1-37
java2-1.4.2-0.pm.0
java2-jre-1.4.2-0.pm.0
mjpegtools-1.6.2-1
alice@wonderland:~> rpm -q freemind
freemind-0.7.1-6
alice@wonderland:~> env | grep -i j
JRE_HOME=/usr/lib/java/jre
PATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:[etc...]
JAVA_BINDIR=/usr/lib/java/bin
JAVA_HOME=/usr/lib/java
SDK_HOME=/usr/lib/java
JDK_HOME=/usr/lib/java
JAVA_ROOT=/usr/lib/java

alice@wonderland:~>
  • open a new thread in the Help Forum of the FreeMind Project,
  • select the commands and what they output,
  • and paste the stuff using the middle button of your mouse in the message body.
  • Explain also your problem of course.
  • Add the name and version of your distribution (SuSE 8.2 or whatever).
  • That should be all.