If setWritable(true, false)
is returning false
if the operation fails.
As the javadoc says:
The operation will fail if the user does not have permission to change the access permissions of this abstract pathname.
Find out why your application doesn't have permission, and you can then figure out what you need to do to fix the problem ... or that you can't fix it.
(Running the code as "the administrator" may or may not work. For instance, if your application is a service that is running on a system with SELinux in enforcing mode, then even "root" privilege won't let you override the rules set down by the SELinux policy files.)