I found a solution to your problem first step:
you must deploy the application build a folder  make sure you don't use
a directory which has any spaces in the path (such as the Program Files directory on Windows)as this may
cause the UserDirectoryException.
such as build a folder "myregister"  in Driver D and copy the program in it.add the following codes to server.xml:     </Context>        <Context path="/myregister" 
                 docBase="d:\myregister\" 
                 crossContext="false"
                 debug="0" 
                 reloadable="true" >           <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_dbtest_log." suffix=".txt"
           timestamp="true"/>     </Context> second step:
just find the following code within the 'UserDirectory.java'
    public void setUser(String userId, String password) throws
            UserDirectoryException {        // no nulls
        if ((null==userId) || (null==password)) {
         System.out.print("userid is null");
            throw new UserDirectoryException();
        }
        try {            // conform userId to uppercase when stored
            p.put(fixId(userId), password);
            String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
            p.store(new FileOutputStream(o), UserDirectoryHeader);            
        }        catch (IOException e) {
            throw new UserDirectoryException();       }
    }
modify as follow: 
    public void setUser(String userId, String password) throws
            UserDirectoryException {        // no nulls
        if ((null==userId) || (null==password)) {
         System.out.print("userid is null");
            throw new UserDirectoryException();
        }
        try {            // conform userId to uppercase when stored
            p.put(fixId(userId), password);
            String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
    System.out.println(o); //o is /D:/myregister/WEB-INF/classes/resources/users.properties
    String ostr=o.substring(1); // the  line must be add is to use to remove the "/" in  String o 
    System.out.println(ostr); //ostr is D:/myregister/WEB-INF/classes/resources/users.properties
            p.store(new FileOutputStream(ostr), UserDirectoryHeader);//modify o as ostr            
        }        catch (IOException e) {
            throw new UserDirectoryException();       }
    }
by the way,the String o is /D:/myregister/WEB-INF/classes/resources/users.properties
the String ostr is D:/myregister/WEB-INF/classes/resources/users.properties你也可参考:(中文)
http://community.csdn.net/Expert/topic/4238/4238768.xml?temp=.8120386