ECCE 6.3. Install/Java Problem

From NWChem

Viewed 5490 times, With a total of 10 Posts
Jump to: navigation, search

Clicked A Few Times
Threads 1
Posts 5
Hi.

I tried to install ECCE 6.3. via the script for Intel or AMD 64-bit Linux systems (nstall_ecce.v6.3.rhel5-gcc4.1.2-m64.csh). It proceeds without any error, but when i try to start the ECCE servers only the httpd starts and i get

Failed to execute main task. Reason: java.lang.NoClassDefFoundError: org.springframework.core.CollectionFactory


Also, the ECCE GUI doesn't start, I only get this error messages:

Starting ECCE ... please wait
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)


Of course, this suggests a Java related error like the wrong version number as stated in the exception, but the prerequisite software check tells me that everything should be okay with that.

Found Java in: /usr/bin/java
ECCE requires java 1.5.x or 1.6.x
This version: java version "1.6.0_20"
Hit return if this java is OK...

Found python in: /usr/bin/python
ECCE requires python 2.4.x or newer
This version: Python 2.6.5
Hit return if this python is OK...

Found perl in: /usr/bin/perl
ECCE requires perl 5.x.x
This is perl 5, version 12, subversion 1 (v5.12.1) built for x86_64-linux-thread-multi
Hit return if this perl is OK...

pkg-config check for gtk+-2.0: Found
ECCE requires gtk+-2.0 2.x.x
This version: 2.20.1
Hit return if this gtk+-2.0 is OK...

Found ImageMagick mogrify in: /usr/bin/mogrify
ECCE requires mogrify 6.x.x or newer
Version: ImageMagick 6.6.1-0 2010-07-29 Q16 http://www.imagemagick.org
Hit return if this mogrify is OK...

Found xterm in: /usr/bin/xterm
Hit return if xterm was found...

Found OpenGL libGL in: libGL.so.1 (libc6,x86-64) => /usr/lib64/libGL.so.1
Found OpenGL libGLU in: libGLU.so.1 (libc6,x86-64) => /usr/lib64/libGLU.so.1
Hit return if these OpenGL libraries are OK...


Since I really don't know how to proceed, any help would be very appreciated.

Gets Around
Threads 2
Posts 82
Can you give me the output from running "lsb_release -a" so I can see what Linux version you are running? The first error when starting the server makes it look like it's doesn't have all the components of java that are needed while the second error when starting ecce applications indicates it's a version related problem. Unfortunately I haven't seen anything that looks quite like this before to give you a quick answer.

Gary

Clicked A Few Times
Threads 1
Posts 5
Thank you very much for your reply.

The lsb-release output is the following:

LSB Version:    n/a
Distributor ID: SUSE LINUX
Description:    openSUSE 11.3 (x86_64)
Release:        11.3
Codename:       n/a


I'm going to get to know more about our infrastructure here and maybe try to install it on other machines to see what the error might be.

Clicked A Few Times
Threads 1
Posts 5
Hello again.

It turned out that there was some Java version mismatch between the machine ECCE was installed on and the clients with an outdated version, so this is fixed now and the GUI would start.
But I still can't start the server because of the error message stated above. That is, the data server starts without issues, but the message server doesn't start.

I would be very thankful for any ideas, even if they aren't quick

Gets Around
Threads 2
Posts 82
Thanks for the update. The data server is an Apache HTTP v2 server with WebDAV so that's just compiled C code with no Java to complicate matters. My OpenSUSE VM is 12.1 so newer than yours. I just verified that a new ECCE 64-bit binary distribution install on my OpenSUSE 12.1 VM does work in regards to the message server (and the rest of ECCE). I may go back and create an OpenSUSE 11.3 VM and then see if I can duplicate your problem later today, assuming that version is still available.

Gary

Gets Around
Threads 2
Posts 82
I'm currently downloading an old OpenSUSE 11.3 distribution. This version is nearly 2 years old so the end result may be that it is just too old for ECCE (ActiveMQ) since I know that OpenSUSE 12.1 works properly. Doing a google search, I am seeing other people with this same problem or close to the same problem. I.e. http://activemq.2283324.n4.nabble.com/Running-ActiveMQ-on-64bit-OpenSUSE-Linux-td2384807.h...

One possibility is that you could run the 32-bit distribution of ECCE and according to the post above, ActiveMQ should be fine. One thing I'll try is seeing if I can get a newer version of java for OpenSUSE 11.3. I'm not sure either if you have the full JDK (development kit) or just the basic JRE (runtime environment) so I'll try installing the latest JDK package assuming I can duplicate your error. I'm also seeing posts to forums indicating that this is a problem with older java like 1.4. So it's worth verifying that the version of java you think is being used to start the ActiveMQ message server is the one that is actually being used. What the ECCE installation script tells you is being used isn't guaranteed to be the one that is run if you are running as a different user for instance.

I'll keep you updated with what I find.

Gary

Gets Around
Threads 2
Posts 82
I just finished installing a 64-bit OpenSUSE 11.3 virtual machine and installing/testing ECCE 6.3. Here are my results:

1. I first installed the 64-bit ECCE binary distribution
2. The only package I needed to install via YaST after the base Linux install was "gtk2-devel". This was found by the "prerequisite check" option on the main install menu.
3. I was able to start the ActiveMQ mesage server just fine. I first edited the "server/ecce-admin/start_ecce_message_server" script and changed the "java -version >& /dev/null" line to just "java -version" so it would report the version number actually being used to start the server.
4. I ran the start_ecce_message_server script and it reported 1.6.0_17 as the java version before starting the server without problem.
5. I ran stop_ecce_message_server.
5. I started ecce (which implicitly restarted the server including both the data and message servers--depending on how you install you might need to explicitly run "start_ecce_server"). I verified the rest of ECCE worked as expected including the Builder with OpenGL and running an NWChem calculation locally. I then ran stop_ecce_server to stop both data and message servers.
6. I decided to install the JDK development kit because only the base java is bundled initially. This meant installing the "java-1_6_0-openjdk-devel" package via YaST. This was just just to see if the version changed because the full JDK isn't really needed just to run ECCE, but only if you are building ECCE from the source code distribution.
7. Re-running start_ecce_message server I got a new java version of 1.6.0_22. So both the first version of java and the new version of java are slightly different than the 1.6.0_20 you said you are running. It was able to successfully start the message server as well after installing JDK (note that prior to the JDK install the javac command is not found while it is found after so that's a quick way of seeing if you have a base Java or the full JDK).

So, my only recommendations to you would be to install the latest java-1_6_0-openjdk-devel package and see if that fixes your problem. Short of that you'll need to update to a newer OpenSUSE (or other Linux) if you want to run the 64-bit ECCE binary distribution. I actually think you'll get this same issue even if you build ECCE from the source code distribution because this problem is with starting the ActiveMQ server, not running any of the ECCE code. For the ActiveMQ server we just distribute a binary ActiveMQ distribution because java byte code should run on any platform regardless of where it is compiled (we get the binary ActiveMQ distribution directly from the ActiveMQ Apache website).

But, as mentioned before, the 32-bit ECCE binary distribution may work fine for you and that would be my other recommendation. I also tested this myself on my OpenSUSE 11.3 VM and it worked fine. I did find that there was a missing shared library for running the 32-bit Builder (libdrm.so.2), but I updated the ECCE 32-bit binary distribution to include this if you grab the latest version. Then it ran just fine including the message server, Builder, etc. So, my three recommendations in order are:

1. Try installing the latest java-1_6_0-openjdk-devel package via YaST and see if that fixes your problem starting the message server. Make the change so that either/both start_ecce_message_server and start_ecce_server report the actual java version being used so you know for sure it's not running something like java 1.4 that is known not to work with ActiveMQ.

2. Download and install/test the latest ECCE 32-bit binary distribution on your 64-bit system.

3. Upgrade to a newer OpenSUSE (at least 11.4 if not 12.1).

I can't think of anything else to try on this end so it's over to you. Based on my googling your error message from starting the server, it just seems like OpenSUSE 11 is somewhat problemmatic with certain java applications. ActiveMQ isn't the only one that reports this message if you do some googling yourself. Let me know if you are able to resolve this.

Gary

Gets Around
Threads 2
Posts 82
Here's another message board thread with the same error message starting ActiveMQ:

http://activemq.2283324.n4.nabble.com/Failed-to-execute-main-task-Reason-java-lang-NoClass...

The solution to this was related to updating java, although they are talking about older versions than what you are apparently running.

Gary

Clicked A Few Times
Threads 1
Posts 5
Hey Gary,

at first, thank you very much for your hard work! This indeed isn't a quick answer.

Well, unfortunately, I'm not root on the systems here. So I can't use YaST and also upgrading to a newer Suse version won't be possible for me. This of course cuts down my possibilities to try the things you recommended.

At first, I checked Java again. "java -version" gives me
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (suse-1.2.1-x86_64)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)

So it's the JDK and I made sure that only this one can be executed when I try to start the server. But still the same problem. I'm not sure if I can install Java again or in a newer version without crashing something here and I really don't want to find that out.

So the easiest thing would be to test the 32-bit version of ECCE. If this doesn't work out well, I think I'm going to bother my admin with all of that

I'll let you know if it works. Thank you.

Felix

Clicked A Few Times
Threads 1
Posts 5
Okay, I got the 64-bit version running fine now. But it was quite a simple problem that caused all the trouble.

I started playing around a bit with the activemq directory in the ecce/server/ folder, getting to the activemq starting script. I checked it for the point where Java is detected or invoked. So the point is:
The ECCE installation script checks the Java installation via executing "java -version". This gave the JDK 1.6.0.
The server startup script checks Java with the help of $JAVA_HOME, which was in my case pointing to some ancient Java directory (1.5.0, not even sure if JRE or JDK). Why this was the case although the java "executable" was 1.6.0 doesn't make sense to me, but that was the point.

So I ensured that all Java environmental variables are set correctly to the JDK 1.6.0, ran the ECCE installation again and started the sever without any issues...
Conclusion: The mixture of Suse 11.3, Java 1.5.0 and ActiveMQ seems to be somewhat unhealthy.

Again, thank you very much for your help and all the suggestions.

Felix

Gets Around
Threads 2
Posts 82
Hi Felix,

Good work tracking that one down. I agree inconsistent use of $JAVA_HOME can lead to problems. I never knew that the activemq sh wrapper script (which isn't an ECCE thing, but part of the ActiveMQ distribution) used $JAVA_HOME. Obviously it's easy for $JAVA_HOME to become unsynchronized with java being run via $PATH. Looking at java documentation I see that they expect users to keep them synchronized. That's a nice theory, but a poor design in practice. Since the rest of ECCE doesn't use $JAVA_HOME, I decided the best solution was to unset $JAVA_HOME prior to invoking the activemq sh script in start_ecce_server and start_ecce_message_server. That way it's guaranteed to run the same one as the client side of ECCE (if you look in the $ECCE_HOME/scripts/ecce wrapper, you'll see that the Gateway toolbar is started under a Java VM and that's how all these C++ applications are able to use java based messaging. It will also be consistent with what is reported for the version of java as part of the install (or build for compiling the ECCE source code distribution).

I just pushed out new downloads for this change (both binary distributions as well as the source code distribution). I assuming your solution was similar. If so, you shouldn't need to download/install again.

Gary


Forum >> ECCE: Extensible Computational Chemistry Environment >> General ECCE Topics



Who's here now Members 0 Guests 1 Bots/Crawler 0


AWC's: 2.5.10 MediaWiki - Stand Alone Forum Extension
Forum theme style by: AWC