Scripts in frameworks direcotry needs to be revisted to set up CLASSPATH 
properly
---------------------------------------------------------------------------------

                 Key: DERBY-1597
                 URL: http://issues.apache.org/jira/browse/DERBY-1597
             Project: Derby
          Issue Type: Bug
          Components: Demos/Scripts
    Affects Versions: 10.2.0.0
            Reporter: Ramandeep Kaur
         Assigned To: Andrew McIntyre


Need to revisit scripts in directory frameworks/embedded/bin and 
frameworks/NetworkServer/bin for setting up CLASSPATH properly. The current 
problem is as following:

If user already has a CLASSPATH set on their system, the CLASSPATH is not set 
again within the script. Therefore, there are no derby classes in the CLASSPATH 
which results in java command failing as it can not find the derby class it is 
calling. Basically, to make the scripts work, user has to either issue  command 
"set CLASSPATH=" or have derby jar files be appended to their system CLASSPATH 
before running any frameworks batch script.

In ksh scripts, there is same problem except that the user has to issue  
command "export CLASSPATH=" or have derby jar files be appended to their system 
CLASSPATH only once as whatever CLASSPATH is set up by scripts is not visible 
once the script is done.

So I am proposing the following solution so that frameworks scripts work 
properly without interfering with system classpath or without any setup from 
user.

In batch scripts:-
----------------------
1.  Before line "call 
"%DERBY_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat", save the current 
classpath as follows:
set SAVED_CLASSPATH=%CLASSPATH%

2.  Replace  the following lines:
@if !"%CLASSPATH%"==! call 
"%DERBY_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
@if "%CLASSPATH%" == "" call 
"%DERBY_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
with
call "%DERBY_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat

Note: I have given the above as example only. The name of script that is 
getting called may be different.

3. At the end of script, reset the CLASSPATH to system CLASSPATH as follows:
set CLASSPATH=%SAVED_CLASSPATH%

In korn scripts:-
----------------------
In ksh script, even though system classpath is only modified within the script 
and is not effective once script exits, to be consistent with batch scripts, do 
the following:

1.  Before line  ". "$DERBY_HOME"/frameworks/embedded/bin/setEmbeddedCP.ksh" 
save the current classpath as follows:
export SAVED_CLASSPATH=$CLASSPATH

2.  Replace  the following lines:

[ -z "$CLASSPATH" ] && {
  . "$DERBY_HOME"/frameworks/embedded/bin/setEmbeddedCP.ksh
}
with
. "$DERBY_HOME"/frameworks/embedded/bin/setEmbeddedCP.ksh

Note: I have given the above as example only. The name of script that is 
getting called may be different.

3. At the end of script, reset the CLASSPATH to system CLASSPATH as follows:
export CLASSPATH=$SAVED_CLASSPATH



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to