Re: commons-vfs-2.4.1 - Question re. usage of VFS.getManager() - SOLVED
Hi Bernd, Thanks for your reply. When I tried this again today VFS.getManager().getSchemes() returns the following (impressive) list of schemes: [zip, par, ftps, res, ftp, sar, war, file, gz, tmp, http4s, ear, ejb3, jar, sftp, http4, ram] and VFS.getManager().resolveFile("ftp://ftp.gnu.org/README;, opts); works as expected. So I don’t know what happened but it looks like I spent a lot of time chasing a ghost. Oh well, at least I learned a thing or two. Thanks for your help anyway. Erwin > > I think the problem in your case is that the default filesystem manager does > not know about the ftp: scheme. The error message is a bit missleading (since > a fix done, probably we should file a bug for this). > > The default manager does try to load the FtpProvider and tries to register it > with ftp: so I assume loading of the provider failed. Maybe you are missing > dependencies like commons-net (see the website for the dependencies per > provider). > > For debugging you can print manager.getSchemes() to see the available schemes > (providers). > Gruss > Bernd > > > -- > http://bernd.eckenfels.net > > > Von: Erwin Hogeweg > Gesendet: Mittwoch, Oktober 30, 2019 3:29 AM > An: Commons Users List > Betreff: commons-vfs-2.4.1 - Question re. usage of VFS.getManager() > > All - > > I am trying to set up a VFS but I struggled a while to get past a > FileSystemException. After looking at the VFS source code I understood what > was going on, and I was able to create a work-around. However, I am not sure > that what I hacked together is the right approach so I am looking for some > guidance from the experts here… > > This is what I was trying to do: > > FileObject path = VFS.getManager().resolveFile("ftp://ftp.gnu.org/README;, > new FileSystemOptions()); > > The issue is, or at least appears to be, that the FileSystemManager doesn’t > have a baseFile so the resolveFile blows up with this exception: > > org.apache.commons.vfs2.FileSystemException: Could not find file with URI > "ftp://ftp.gnu.org/README; because it is a relative path, and no base URI was > provided. > at > org.apache.commons.vfs2.FileSystemException.requireNonNull(FileSystemException.java:87) > > I could not find how/where to define that baseFile so I eventually settled on > this work-around: > > StandardFileSystemManager fsManager = (StandardFileSystemManager) > VFS.getManager(); // YUCK! > fsManager.setBaseFile(new File("")); // Another YUCK. > FileObject path = fsManager.resolveFile("ftp://ftp.gnu.org/README;, opts); > > That works, and now I end up with the correct (expected) path. It doesn’t > feel right though so any advice would be greatly appreciated. > > > Cheers, > > Erwin > >
Re: commons-vfs-2.4.1 - Question re. usage of VFS.getManager()
Hello I think the problem in your case is that the default filesystem manager does not know about the ftp: scheme. The error message is a bit missleading (since a fix done, probably we should file a bug for this). The default manager does try to load the FtpProvider and tries to register it with ftp: so I assume loading of the provider failed. Maybe you are missing dependencies like commons-net (see the website for the dependencies per provider). For debugging you can print manager.getSchemes() to see the available schemes (providers). Gruss Bernd -- http://bernd.eckenfels.net Von: Erwin Hogeweg Gesendet: Mittwoch, Oktober 30, 2019 3:29 AM An: Commons Users List Betreff: commons-vfs-2.4.1 - Question re. usage of VFS.getManager() All - I am trying to set up a VFS but I struggled a while to get past a FileSystemException. After looking at the VFS source code I understood what was going on, and I was able to create a work-around. However, I am not sure that what I hacked together is the right approach so I am looking for some guidance from the experts here… This is what I was trying to do: FileObject path = VFS.getManager().resolveFile("ftp://ftp.gnu.org/README;, new FileSystemOptions()); The issue is, or at least appears to be, that the FileSystemManager doesn’t have a baseFile so the resolveFile blows up with this exception: org.apache.commons.vfs2.FileSystemException: Could not find file with URI "ftp://ftp.gnu.org/README; because it is a relative path, and no base URI was provided. at org.apache.commons.vfs2.FileSystemException.requireNonNull(FileSystemException.java:87) I could not find how/where to define that baseFile so I eventually settled on this work-around: StandardFileSystemManager fsManager = (StandardFileSystemManager) VFS.getManager(); // YUCK! fsManager.setBaseFile(new File("")); // Another YUCK. FileObject path = fsManager.resolveFile("ftp://ftp.gnu.org/README;, opts); That works, and now I end up with the correct (expected) path. It doesn’t feel right though so any advice would be greatly appreciated. Cheers, Erwin
commons-vfs-2.4.1 - Question re. usage of VFS.getManager()
All - I am trying to set up a VFS but I struggled a while to get past a FileSystemException. After looking at the VFS source code I understood what was going on, and I was able to create a work-around. However, I am not sure that what I hacked together is the right approach so I am looking for some guidance from the experts here… This is what I was trying to do: FileObject path = VFS.getManager().resolveFile("ftp://ftp.gnu.org/README;, new FileSystemOptions()); The issue is, or at least appears to be, that the FileSystemManager doesn’t have a baseFile so the resolveFile blows up with this exception: org.apache.commons.vfs2.FileSystemException: Could not find file with URI "ftp://ftp.gnu.org/README; because it is a relative path, and no base URI was provided. at org.apache.commons.vfs2.FileSystemException.requireNonNull(FileSystemException.java:87) I could not find how/where to define that baseFile so I eventually settled on this work-around: StandardFileSystemManager fsManager = (StandardFileSystemManager) VFS.getManager(); // YUCK! fsManager.setBaseFile(new File("")); // Another YUCK. FileObject path = fsManager.resolveFile("ftp://ftp.gnu.org/README;, opts); That works, and now I end up with the correct (expected) path. It doesn’t feel right though so any advice would be greatly appreciated. Cheers, Erwin