Since you opened another
thread to ask this same question, I'm not sure you understood Petr's explanation, so I'll try to give you a simpler version: the UNIX command "cd" only affects a shell that executes it, and it will have no effect on a Java process that executes it. The "su" command, on the other hand, starts a new shell altogether with the given user's privileges, and so again, the process that executed "su" is unaffected.
If your goal is to run a UNIX command as another user, then your best option would be to use the "sudo" command, as Petr suggested. If you don't have sudo available, then you can emulate it by using the "-c" option to su:
su - somebody -c "some command"
If you want a single shell to execute multiple commands as another user, then exec "su", use Process.getOutputStream() to get the standard input of the process, and send commands to it that way.
But in any event, there is no way to change the effective userid of the Java process itself without using native methods.