Likely but not exactly.
the provider I missed im my case here is
[org.apache.commons.vfs2.provider.webdav.WebdavFileProvider]
and the required classes are [org.apache.commons.httpclient.HttpClient] and
[org.apache.jackrabbit.webdav.client.methods.DavMethod]

I went analyze my pom.
I use

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.7</version>
</dependency>

[versions-maven-plugin] use [maven-plugin-plugin] to generate plugin.xml,
and which contains

<dependency>
  <groupId>org.apache.maven.wagon</groupId>
  <artifactId>wagon-webdav-jackrabbit</artifactId>
  <type>jar</type>
  <version>1.0-beta-6</version>
</dependency>

so [wagon-webdav-jackrabbit] contains
[org.apache.jackrabbit.webdav.client.methods.BaseDavRequest]

[versions-maven-plugin] use [maven-plugin-plugin] to generate plugin.xml,
and which also contains

<dependency>
  <groupId>commons-httpclient</groupId>
  <artifactId>commons-httpclient</artifactId>
  <type>jar</type>
  <version>3.0</version>
</dependency>

so [commons-httpclient] contains [org.apache.commons.httpclient.HttpClient]


*So things goes clear here.Every project who have [versions-maven-plugin]
2.7 as dependency will not start VFS normally.*

versions-maven-plugin is a plugin for auto upgrade version num in pom, and
is really useful to me.
I have no idea about why [versions-maven-plugin]'s author need do this.

besides.

  [versions-maven-plugin]'s plugin.xml contains some things like jackrabbit.
and yeah there be 3 jackrabbit libs.
I have no idea whether they invoke each other or what.
I just hope this can be a little useful for you.

    <dependency>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-webdav-jackrabbit</artifactId>
      <type>jar</type>
      <version>1.0-beta-6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-webdav</artifactId>
      <type>jar</type>
      <version>1.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-commons</artifactId>
      <type>jar</type>
      <version>1.5.0</version>
    </dependency>

besides.

I really think split one java package into several maven project be
dangerous.



Woonsan Ko <woon...@apache.org> 于2020年1月24日周五 上午1:03写道:

> On Sun, Jan 19, 2020 at 11:41 AM Xeno Amess <xenoam...@gmail.com> wrote:
> >
> > yep that make sense.
> > but I'd rather add a class-check for provider class.
> > there already be a mechanism for making sure if all classes needed for
> > this provider class exist -> if not then just do not add the provider.
> > I will add a similar mechanism for making sure if the provider class
> > itself exist -> if not then just do not add the provider.
> > pull request here.
> > https://github.com/apache/commons-vfs/pull/78
>
> I thought the nested if-available elements [1] would do necessary
> checks before attempting to create the provider. In my understanding,
> if the required class doesn't exist, then the provider won't be
> created.
> So, in your case, do you have both org.apache.http.client.HttpClient
> and org.apache.jackrabbit.webdav.client.methods.BaseDavRequest, but
> not have commons-vfs2-jackrabbit1-2.5.0? Is it why you met the
> problem?
>
> Regards,
>
> Woonsan
>
> [1]
> https://github.com/apache/commons-vfs/blob/rel/commons-vfs-2.5.0/commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml#L107-L108
>
> >
> > Rob Spoor <apa...@icemanx.nl> 于2020年1月20日周一 上午12:13写道:
> > >
> > > It seems that when the webdav support was moved to a separate artifact,
> > > the developers forgot to update file
> > >
> commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml.
> > > This file is used by StandardFileSystemManager to load the default
> > > providers.
> > >
> > > I think this warrants a fix, to move the webdav provider from this
> > > default providers.xml file to file
> > > commons-vfs2-jackrabbit1/src/main/resources/META-INF/vfs-providers.xml,
> > > and create the same file with the correct providers for the
> > > commons-vfs2-jackrabbit2 module.
> > >
> > >
> > > On 19/01/2020 16:57, Xeno Amess wrote:
> > > > OK I get where is bugged.
> > > > I will fix it and add a test for that never happen again.
> > > >
> > > > Xeno Amess <xenoam...@gmail.com> 于2020年1月19日周日 下午11:21写道:
> > > >>
> > > >> The key point is even if I do not wanna use it I must have this
> > > >> class,or VFS.getManager() can never run.
> > > >>
> > > >> IMO this type of class relationship cause the project where hold
> this
> > > >> class must be added into vfs's pom as a dependency, or just move
> class
> > > >> VFS into that project aswell.
> > > >>
> > > >> Otherwise we should not let the VFS.getManager() rely on this class.
> > > >>
> > > >> Thanks for finding this class though.
> > > >>
> > > >> btw I tested 2.4, 2.4 is correct.
> > > >>
> > > >> Rob Spoor <apa...@icemanx.nl> 于2020年1月19日周日 下午10:00写道:
> > > >>>
> > > >>> The class was there in release 2.4.1:
> > > >>>
> https://github.com/apache/commons-vfs/blob/rel/commons-vfs-2.4.1/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
> .
> > > >>> In the next release, 2.5.0, it can indeed no longer be found. A
> bit of
> > > >>> investigating showed that the webdav classes got moved to a new
> > > >>> artifact:
> > > >>>
> https://github.com/apache/commons-vfs/commit/42ff473acbb5363b88f5ab3c5fddbae7b206c1d2
> > > >>>
> > > >>> That means you can still use it, you just need to include an extra
> > > >>> dependency:
> > > >>>
> https://mvnrepository.com/artifact/org.apache.commons/commons-vfs2-jackrabbit1/2.6.0
> > > >>>
> > > >>> There's apparently also a Jackrabbit 2 version available:
> > > >>>
> https://mvnrepository.com/artifact/org.apache.commons/commons-vfs2-jackrabbit2/2.6.0
> > > >>>
> > > >>>
> > > >>> On 19/01/2020 11:24, Xeno Amess wrote:
> > > >>>> Right now I'm using something like
> > > >>>> this to deal with relative files.
> > > >>>> But I just think there might be a more elegant way...
> > > >>>>
> > > >>>> fileSystemManager = new
> > > >>>> org.apache.commons.vfs2.impl.StandardFileSystemManager();
> > > >>>> fileSystemManager.setLogger(null);
> > > >>>> try {
> > > >>>>       fileSystemManager.init();
> > > >>>>       fileSystemManager.setBaseFile(new File(""));
> > > >>>> } catch (FileSystemException e) {
> > > >>>>       e.printStackTrace();
> > > >>>> }
> > > >>>>
> > > >>>> Xeno Amess <xenoam...@gmail.com> 于2020年1月19日周日 下午6:08写道:
> > > >>>>>
> > > >>>>> I'm trying to migrate to commons-vfs2 now
> > > >>>>> severial things I found not quite right / amazing.
> > > >>>>>
> > > >>>>> 1.
> > > >>>>>    I tested version 2.6.0 and 2.5.0, and I just start at
> > > >>>>> VSF.getManager() (of cause I have no additional contfigure or
> > > >>>>> something)
> > > >>>>>
> > > >>>>> It said class not
> > > >>>>> found:org.apache.commons.vfs2.provider.webdav.WebdavFileProvider
> > > >>>>>
> > > >>>>> And I looked into your binary jars I get from maven central
> (2.6.0).
> > > >>>>>
> > > >>>>> they really do not have that class WebdavFileProvider.
> > > >>>>> (even not found that package
> org.apache.commons.vfs2.provider.webdav)
> > > >>>>>
> > > >>>>> And after I downgrade to 2.3 (I really wonder why 2.3 not 2.3.0
> but
> > > >>>>> that is not important)
> > > >>>>> It can run now.(and never tell me class not found again)
> > > >>>>> I dont't want to try 2.4.0. Really bad connection here(I'm in a
> villige now).
> > > >>>>> All I get is:
> > > >>>>> 2.6.0, broken.
> > > >>>>> 2.5.0, broken.
> > > >>>>> 2.3, fine.
> > > >>>>>
> > > >>>>> According to the file on github, it said it might be deprecated,
> so I
> > > >>>>> wonder if you already deprecate d it and you just forgotten it?
> > > >>>>>
> > > >>>>>    btw, according to your webpage
> https://commons.apache.org/proper/commons-vfs/
> > > >>>>> there even do not exist 2.6.0
> > > >>>>> But there be a 2.6.0 in maven central.
> > > >>>>> really make me confused.
> > > >>>>>
> > > >>>>> 2.
> > > >>>>> for using commons-vfs2 I downgrade slf4j from 2.0.0alpha to
> 1.7.30
> > > >>>>> We all know slf4j's author really do not care about backward
> > > >>>>> maintenance or something.
> > > >>>>> His codes are never able to migrate.
> > > >>>>> even though, will there be some plan about using reflect or
> something
> > > >>>>> to make vfs2 CAN suit slf4j 2.0?
> > > >>>>>
> > > >>>>> 3.
> > > >>>>> for some reason I need to deal with relative file path.
> > > >>>>> Is there any guide about using relative file path in vfs2?
> > > >>>>
> > > >>>>
> ---------------------------------------------------------------------
> > > >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > >>>> For additional commands, e-mail: dev-h...@commons.apache.org
> > > >>>
> > > >>>
> ---------------------------------------------------------------------
> > > >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > >>> For additional commands, e-mail: dev-h...@commons.apache.org
> > > >>>
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > > For additional commands, e-mail: dev-h...@commons.apache.org
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > For additional commands, e-mail: dev-h...@commons.apache.org
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > For additional commands, e-mail: dev-h...@commons.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to