Troubleshoot and support > Deployment > WebSphere Commerce Build and Deployment tool issues


Troubleshoot: EJB deployment fails in the build process on Windows

On a Windows build system, the EJB deployment process might fail due to an IOException with error code 87.


Problem

The Windows command-line prompt has a limitation on the length of the string used. In the Build and Deployment tool, the <ejbDeploy> Ant task used by the build process invokes a command that delegates the actual work to the EJB deployment tool in WebSphere Application Server. A classpath which includes libraries from the WebSphere Application Server and the WebSphere Commerce installation directories is passed into the command. If the classpath is too long, the build process might fail with an error message similar to the following:

C:\IBM\WebSphere\CommerceServer70\wcbd\wcbd-build-common.xml:446: java.io.IOException: 
Cannot run program "C:\IBM\WebSphere\AppServer\java\jre\bin\java.exe" 
(in directory "C:\IBM\WebSphere\CommerceServer70\wcbd\working\compile\ejb\WebSphereCommerceServerExtensionsData"): 
CreateProcess error=87, The parameter is incorrect.  

For more information regarding the Windows limitation, refer to the following page: http://support.microsoft.com/kb/830473


Solution

To work around the limitation, use the Windows subst command in a command prompt to shorten the path to the WebSphere Application Server (or the WebSphere Application Server Test Environment) or the WebSphere Commerce installation directories. For example:

subst Y: C:\IBM\WebSphere\AppServer

or

subst Z: C:\IBM\WebSphere\CommerceServer70

Then set the was.home or wc.home properties to the new values in WCBD installdir/build.properties. For more information regarding the subst command, run the following command in a command prompt:

subst /?

The subst command is not persistent. If the system is restarted, the virtual drives will no longer exist and the subst commands will have to be run again. Therefore, you should include these commands in WCBD installdir/setenv.bat so they are run in every build.


+

Search Tips   |   Advanced Search