8 Replies Latest reply on Nov 3, 2010 2:10 AM by muraali

    JBOSS 5.1 with -d64 option

    muraali

      Hi All,

       

      We have an issue in running JBOSS 5.1 with 64 bit JVM.

       

      1) If I run jboss with -d64 option, I get a java.lang.NoClassDefFoundError

      2) If I run jboss without -d64 option, it works fine.

       

      With -d64:

       

      /export/home/ems/jre/bin/java -d64 -cp /export/home/jboss/bin/run.jar:/export/home/ems/jre/lib/tools.jar org.jboss.Main
      Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/Main
      Could not find the main class: org.jboss.Main.  Program will exit.

      /export/home/ems/jre/bin/java -d64 -cp /export/home/jboss/bin/run.jar:/export/home/ems/jre/lib/tools.jar org.jboss.Main

      Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/Main

      Could not find the main class: org.jboss.Main.  Program will exit.

       

       

      Without -d64:

      /export/home/ems/jre/bin/java  -cp /export/home/jboss/bin/run.jar:/export/home/ems/jre/lib/tools.jar org.jboss.Main

      10:56:13,170 INFO  [ServerImpl] Starting JBoss (Microcontainer)...

      10:56:13,174 INFO  [ServerImpl] Release ID: JBoss [The Oracle] 5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)

      10:56:13,176 INFO  [ServerImpl] Bootstrap URL: null

      10:56:13,176 INFO  [ServerImpl] Home Dir: /export/home/jboss

      10:56:13,177 INFO  [ServerImpl] Home URL: file:/export/home/jboss/

      10:56:13,177 INFO  [ServerImpl] Library URL: file:/export/home/jboss/lib/

       

      Java version:

      /export/home/ems/jre/bin/java -d64 -version

      java version "1.6.0_17"

      Java(TM) SE Runtime Environment (build 1.6.0_17-b04)

      Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)

       

      Anything I am missing here?

       

      Regards

      -murali

        • 1. Re: JBOSS 5.1 with -d64 option
          wdfink

          Do you start jboss without run.sh? It doesn't look like.

          • 2. Re: JBOSS 5.1 with -d64 option
            peterj

            What OS are you running? The -d64 option is for Solairs only, if I recall corrctly, You don't need thast option on Linux - if you have the 64-bit JVM it always runs in 64-bit.

            • 3. Re: JBOSS 5.1 with -d64 option
              muraali

              Yes, the OS is Solaris 10 on T5220 machine.

              • 4. Re: JBOSS 5.1 with -d64 option
                muraali

                We use run.sh. I used to get the same error there also. For posting, I tried to capture it from command line.

                • 5. Re: JBOSS 5.1 with -d64 option
                  jaikiran

                  Post the exact changes that you did to your run.sh/run.conf and also post the exact output (including the exception) that you see when you run the run.sh

                  • 6. Re: JBOSS 5.1 with -d64 option
                    muraali

                    Changes to run.sh (in bold):


                    ----------------------------------------- 8< ---------------------------------------------

                     

                    # For Cygwin, switch paths to Windows format before running java
                    if $cygwin; then
                        JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`
                        JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
                        JBOSS_CLASSPATH=`cygpath --path --windows "$JBOSS_CLASSPATH"`
                        JBOSS_ENDORSED_DIRS=`cygpath --path --windows "$JBOSS_ENDORSED_DIRS"`
                    fi
                    JAVA_OPTS="-d64 $JAVA_OPTS"
                    # Display our environment
                    echo "========================================================================="
                    echo ""
                    echo "  JBoss Bootstrap Environment"
                    echo ""
                    echo "  JBOSS_HOME: $JBOSS_HOME"
                    echo ""
                    echo "  JAVA: $JAVA"
                    echo ""
                    echo "  JAVA_OPTS: $JAVA_OPTS"
                    echo ""
                    echo "  CLASSPATH: $JBOSS_CLASSPATH"
                    echo ""
                    echo "========================================================================="
                    echo ""
                    while true; do
                       if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
                          # Execute the JVM in the foreground
                          exec "$JAVA" $JAVA_OPTS \
                             -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
                             -classpath "$JBOSS_CLASSPATH" \
                             org.jboss.Main "$@"
                          JBOSS_STATUS=$?
                       else
                          # Execute the JVM in the background
                          exec "$JAVA" $JAVA_OPTS \
                             -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
                             -classpath "$JBOSS_CLASSPATH" \
                             org.jboss.Main "$@" &
                          JBOSS_PID=$!

                    # For Cygwin, switch paths to Windows format before running java

                    if $cygwin; then

                        JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`

                        JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`

                        JBOSS_CLASSPATH=`cygpath --path --windows "$JBOSS_CLASSPATH"`

                        JBOSS_ENDORSED_DIRS=`cygpath --path --windows "$JBOSS_ENDORSED_DIRS"`

                    fi

                     

                    JAVA_OPTS="-d64 $JAVA_OPTS"

                     

                    # Display our environment

                    echo "========================================================================="

                    echo ""

                    echo "  JBoss Bootstrap Environment"

                    echo ""

                    echo "  JBOSS_HOME: $JBOSS_HOME"

                    echo ""

                    echo "  JAVA: $JAVA"

                    echo ""

                    echo "  JAVA_OPTS: $JAVA_OPTS"

                    echo ""

                    echo "  CLASSPATH: $JBOSS_CLASSPATH"

                    echo ""

                    echo "========================================================================="

                    echo ""

                     

                    while true; do

                       if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then

                          # Execute the JVM in the foreground

                          exec "$JAVA" $JAVA_OPTS \

                             -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \

                             -classpath "$JBOSS_CLASSPATH" \

                             org.jboss.Main "$@"

                          JBOSS_STATUS=$?

                       else

                          # Execute the JVM in the background

                          exec "$JAVA" $JAVA_OPTS \

                             -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \

                             -classpath "$JBOSS_CLASSPATH" \

                             org.jboss.Main "$@" &

                          JBOSS_PID=$!

                          # Trap common signals and relay them to the jboss process

                          trap "kill -HUP  $JBOSS_PID" HUP

                     

                    ----------------------------------------- >8 ---------------------------------------------

                     

                    Output while running:

                     

                    =========================================================================

                     

                      JBoss Bootstrap Environment

                     

                      JBOSS_HOME: /export/home/jboss

                     

                      JAVA: /export/home/ems/jre/bin/java

                     

                      JAVA_OPTS: -d64 -Dprogram.name=run.sh  -server -Xms3072m -Xmx3072m  -XX:+UseParallelOldGC -XX:ParallelGCThreads=8 -XX:PermSize=96m -XX:MaxPermSize=352m -Djava.security.manager -Djava.security.policy==/export/home/jboss/server/insight/conf/server.policy -DinstallRoot=/export/home/ems -Dprod.prodems.dir=/export/home/ems/weblogic/prodEms -DsystemFile=/export/home/ems/weblogic/prodEms/data/sys/Insight.init -DsystemConfigFile=/export/home/ems/weblogic/prodEms/data/sys/SystemConfig.txt -Dprod.configFile.dir=/export/home/ems/weblogic/prodEms/data/sys -Djava.io.tmpdir=/export/home/jboss/server/insight/tmp -Dprod.jboss.home.dir=/export/home/jboss -Dprod.jboss.server.home.dir=/export/home/jboss/server/insight -Dorg.jboss.logging.Log4jService.catchSystemOut=false -Dorg.jboss.logging.Log4jService.catchSystemErr=false -Dsun.rmi.dgc.server.gcInterval=1800000 -Dsun.rmi.dgc.client.gcInterval=1800000 -Dinsight.haMode=standalone -Dinsight.logicalIp= -Dinsight.drMode=standalone -Dinsight.drAddr= -Dinsight.host=85042b82 -Dprod.config.servername.key=localhost -Dprod.system.oracleBase=/export/home/oracle -Dprod.system.databaseSID=SIDB -Dremoting.bind_by_host=false -Djava.rmi.server.hostname=10.54.16.13 -Djboss.vfs.forceVfsJar=true

                     

                      CLASSPATH: /export/home/jboss/bin/run.jar:/export/home/ems/jre/lib/tools.jar

                     

                    =========================================================================

                     

                    Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/Main

                    Could not find the main class: org.jboss.Main.  Program will exit.

                    2010-11-02 09:24:56 EDT

                    • 7. Re: JBOSS 5.1 with -d64 option
                      peterj

                      org.jboss.Main is in run.jar, which is in the classpath.You might have to get a Solaris expert to look at this, my gut feeling is that it is somehow related to security: the 64-bit JVM is either being loaded uder a different account, or whetever account it is using doesn't have access to the run.jar file.

                       

                      Some things you can try. Set the _JAVA_LOADER_DEBUG env var, it will print out extra information as the JVM gets loaded. Also try setting -verbose:class, that will tell you which classes are being loaded and from where.

                       

                      Anyway, this is really a Java on Solaris issue, not a JBoss AS issue.

                      • 8. Re: JBOSS 5.1 with -d64 option
                        muraali

                        It works now. I was mixing the 64 bit jvm component from jre6u22 with jre6u17. After installing jre 64 bit component from jre6u17, it is working fine now.