Tip: Using the SCM Command Line without IBM’s Java Virtual Machine
Summary
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:
- complaints about J9-specific optimizations
-Xshareclasses
and-Xquickstart
, - 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:
-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.