After looking at the code, I have the following comments: the PackageInstaller code looks fine, except for one, but important thing - the uima.home directory is not set in the InstallationController before the verification is done. Instead, the verification code in the InstallationController is modified to use 'java.class.path' JVM property as the UIMA CLASSPATH. I don't believe, this code will work in applications, where people just need to install/verify PEAR packages. The verification process usually requires most of UIMA JARs to be in the CLASSPATH, while applications, like PEAR Installer GUI, do not need most of the them. My recommendation is to add 'uimaHome' parameter to the PackageInstaller.installPackage method, or to intsruct application developers setting uima.home in their JVM properties. I also recommend rolling back modifications of the InstallationController class. As an alternative, we can check in the verification code of the InstallationController class if the uima.home is set, and use java.class.path, only if it is not set. This way we, at least, make sure that existing applications, like PEAR Installer GUI, will still be able to verify installed PEARs.
I agree it seems sensible to have a way for the user to optionally specify a different classpath for finding the UIMA jars, and only fall back on java.class.path if it is not set. However I do think for most users java.class.path will probably work. The classpath will have to contain uima-core.jar in order for the user to be invoking these APIs, and that should be enough for most annotators or analysis engines to run. -Adam
