Tip: Using the SCM Command Line without IBM’s Java Virtual Machine


The SCM command line interface is designed to run with the IBM’s Java Virtual Machine (J9). If J9 is not available for your platform, you must make some changes to get the command line to run.

You can use the advice in this article to get scm running on Solaris and Mac, as well as other platforms.

More Information

There are three problems you may encounter when trying to get scm running on platforms that don’t have J9 support:

  1. complaints about J9-specific optimizations -Xshareclasses and -Xquickstart,
  2. complaints that the IBM Class Sharing Adaptor is not present (RTC 2.x only), and
  3. a nonfunctional OSGi launcher.

Complaints about J9-specific optimizations

If you encounter output similar to:

$ ./scm  Unrecognized option: -Xshareclasses  Could not create the Java virtual machine.

you must remove two J9 specific optimizations from the scm.ini file. Assuming that you have installed the command line client from the .zip file, open jazz/scmtools/eclipse/scm.ini and delete the two lines stating:

-Xshareclasses  -Xquickstart

In RTC version 3.0 and greater, the -Xquickstart is suffixed with a :nonfatal. Delete that too.

Complaints about a missing “Class Sharing Adaptor”

In version 2.x of RTC, an additional class sharing adaptor was shipped with the command line client. When running on non-J9 virtual machines, the adaptor will emit:

The IBM Class Sharing Adaptor will not work in this configuration.  You are not running on J9.

when you start scm. To get rid of the complaint, delete the file named com.ibm.cds_2.0.3.200711261141.jar from the jazz/scmtools/eclipse/plugins/ directory.

A non-functional OSGi launcher

If you are running on a platform that doesn’t provide a native OSGi launcher, you won’t be able to start the command line tool by running scm or scm.exe. Instead, you should use the bundled scm.sh. If that doesn’t work on your platform, write a script that runs Java in the following manner:

java -jar plugins/org.eclipse.equinox.launcher_<OSGi-version>.jar <arguments-to-pass> 

The exact syntax depends on your script runtime.

Was this information helpful? Yes No 3 people rated this as helpful.