java-wrappers fails ito find java runtimes installed in /opt

Bug #1025914 reported by Darko S
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
java-wrappers (Ubuntu)
In Progress
Undecided
Unassigned

Bug Description

[Impact]
java-wrappers failed to find java runtime installed in /opt, which caused all java-based program failed to launch, if the user installed java runtime from Oracle.

apt-cache rdepends java-wrappers
java-wrappers
Reverse Depends:
  freemind
  worldwind
  jajuk
  weka
  umlet
  sweethome3d
  statsvn
  statcvs
  sqlline
  pdfsam
  opticalraytracer
  latexdraw
  jxplorer
  jsymphonic
  jmeter
  jftp
  jeuclid-mathviewer
  jeuclid-cli
  jedit
  jardiff
  jalview
  jabref
  hdfview
  freeplane
  freemind
  freecol
  elki
  electric
  checkstyle
  bnd
  basex
  azureus
  yui-compressor
  libfop-java
  libbatik-java

[Test Case]

UBUNTU RELEASE (cat /etc/lsb-release)
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

PACKAGES
ii freemind 0.9.0+dfsg-1 Java Program for creating and viewing Mindmaps
ii java-wrappers 0.1.24 wrappers for java executables

When /etc/alternatives/java points to java runtime installed in /opt (example may be /opt/ibm-java-i386-60/bin/java), then in /usr/lib/java-wrappers/jvm-list.sh emply value is assigned to __jvm_alt in following assignment:

__jvm_alt=$(readlink /etc/alternatives/java|sed -n 's/\(\/usr\/lib\/jvm\/[^\/]*\)\/.*/\1/p')

Reason is that bacause sed expression did not match path in /opt/..., no substitution is made, and such sed statement prints pattern space only if substitution is made.

Therefore in /usr/lib/java-wrappers/java-wrappers.sh fgrep in following code always succeeds and JAVA_HOME is set to empty:
 if echo "$DIRS" | fgrep "$__jvm_alt" > /dev/null ; then
     JAVA_HOME="$__jvm_alt"
     java_debug "Picking up the JVM designated by the alternatives system: "
     java_debug " JAVA_HOME = '$JAVA_HOME'"
 else

        # And pick up the first one that works reasonably
     for dir in $DIRS; do
  if [ -x $dir/bin/java ]; then
      JAVA_HOME=$dir
      break;
  fi
     done
 fi

This eventually leads to this abnormal exit:
    if [ "$JAVA_HOME" ] ; then
 # ... omitted ...
    else
 java_warning "No java runtime was found"
 return 1;
    fi

Hence other packages that use java-wrappers, e.g. freemind, experience other failures because java-wrappers failure. In example of freemind, it will not start at all.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in java-wrappers (Ubuntu):
status: New → Confirmed
Revision history for this message
Rex Tsai (chihchun) wrote :
Changed in java-wrappers (Ubuntu):
status: Confirmed → In Progress
Rex Tsai (chihchun)
description: updated
Rex Tsai (chihchun)
Changed in java-wrappers (Ubuntu):
assignee: nobody → Rex Tsai (chihchun)
Rex Tsai (chihchun)
Changed in java-wrappers (Ubuntu):
assignee: Rex Tsai (chihchun) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.