Apache default document interferes with the ColdFusion expandpath() function
application.relativeRoot = '/path-to-app-root-directory/';
application.absoluteRoot = expandPath(application.relativeRoot);
</cfscript>
The code looks fine, right? One of the uses of the absolute path variable was to read-in some XML files... but no matter what he did he kept getting file/directory not found errors whenever he used the application.absoluteRoot variable. It turned out that the value of the variable always had "index.cfm" appended to the end. The server was running using Apache as the web server, and index.cfm was declared as the default document. According to the CF documentation, expandPath works by appending a relative path to the base path, and the base path is defined as "the currently executing page’s directory path" which is "stored in pageContext.getServletContext()". Java ServletContext objects get a lot of their information from the web server. I was under the impression that this information was defined and stored within the JRE when it instantiates, but apparently not (I assume an internal HTTP request is being made).
BTW - the "fix" was to not put a trailing slash in the value for the relative root, which prevented 'index.cfm' from being appended. This is fairly annoying because it means having to add a slash everywhere in the code that uses the variable... but it works ;)

GetDirectoryFromPath( GetCurrentTemplatePath() )
I always feel safe using that cause I always know what file it executes in.
I know this doesn't have much to do with the post, but I thought a different perspective would be nice.
<cfscript>
application.relativeRoot = '/path-to-app-root-directory/';
application.absoluteRoot = expandPath(left(application.relativeRoot,len(application.relativeRoot)-1));
</cfscript>