Tip: Using the SCM Command Line without IBM’s Java Virtual Machine
Last Updated: November 10, 2010
Build Basis: All versions of RTC
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.
There are three problems you may encounter when trying to get
scm running on platforms that don’t have J9 support:
- complaints about J9-specific optimizations
- complaints that the IBM Class Sharing Adaptor is not present (RTC 2.x only), and
- 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:
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_18.104.22.168711261141.jar from the
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.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.