Yes, I agree Velocity should be able to handle such paths. But my
experience is that my life becomes MUCH simpler when I convert all those
pesky '\' into '/'. In the end, it becomes one thing less to worry
about.

Best regards.

On Thu, 2007-09-06 at 11:50 -0700, Peter Steele wrote:

> I'd be happy not to use backslashes, except that in my case the path
> that created problems was given to me by Java's getAbsolutePath()
> method. Because I'm running under Windows, it returns a Windows path,
> using backslashes, as it should. Velocity should in turn be able to
> handle such a path because it is in fact a valid Windows path.
> 
> -----Original Message-----
> From: Gonzalo Diethelm [mailto:[EMAIL PROTECTED] 
> Sent: Monday, September 03, 2007 5:49 AM
> To: Velocity Users List
> Subject: Re: UNC paths in Velocity
> 
> Allow me to paste my very last reply to this list. Regardless of the
> '/'
> vs '\' issue, Velocity does have a very quirky way of handling
> backslashes... Best regards.
> 
> 
>         I suggest you NEVER use the backslash character for path
>         delimiters. As far as I know, C, C++, C# and Java all
> understand
>         the forward slash as a path separator, with the benefits of
>         portable code and not having to quote and re-quote the
>         backslash. Therefore, try something like
>         "//myserver/home/peter/myproj/template".
> 
> 
> On Fri, 2007-08-31 at 07:50 -0700, Peter Steele wrote:
> 
> > Velocity does not seem to properly support UNC paths under Windows.
> I am running from a network drive on a Vista box and want to point
> Velocity to a location relative to my current dir to find my template
> files. I have code similar to the following:
> > 
> >  
> > 
> >         String templateDir = new File("templates");
> > 
> >         String absTemplateDir = templateDir.getAbsolutePath();
> > 
> >
> Velocity.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
> absTemplateDir);
> > 
> >         Velocity.init();
> > 
> >         Template myTemplate =
> Velocity.getTemplate("my_template.vm");
> > 
> >  
> > 
> > The getTemplate call fails saying that it cannot find the file. The
> init call explains why: it generates a log message similar to this:
> > 
> >  
> > 
> > INFO: FileResourceLoader : adding path '\myserver\home\peter\myproj
> \template'
> > 
> >  
> > 
> > The file path *should* be '\\myserver\home\peter\myproj\template',
> but Velocity strips one of the leading backslashes. The original
> string is correct that’s returned by getAbsolutePath, with four
> backslashes representing two real backslashes:
> > 
> >  
> > 
> >       \\\\myserver\\home\\peter\\myproj\\template
> > 
> >  
> > 
> > This is what I’d expect. This doesn’t seem to satisfy Velocity
> though. If I manually set the string to
> > 
> >  
> > 
> >       \\\\\\\\\\myserver\\home\\peter\\myproj\\template
> > 
> >  
> > 
> > this solves the problem. What I ended up doing though was this:
> > 
> >  
> > 
> >         String absTemplateDir =
> templateDir.getAbsolutePath().replace('\\', '/');
> > 
> >  
> > 
> > This also works, so obviously the problem has something to do with
> interpreting the leading backslash characters that represent the
> Windows UNC path. This seems like a bug to me…
> > 
> >  
> > 
> > 
> > No virus found in this outgoing message.
> > Checked by AVG Free Edition. 
> > Version: 7.5.484 / Virus Database: 269.13.1/981 - Release Date:
> 8/31/2007 6:13 AM
> >  
> 



-- 
Gonzalo Diethelm
[EMAIL PROTECTED]

Reply via email to