ClassNotFoundException:org.apache.commons.vfs.provider.FileProvider

时间:2014-09-04 11:59:32

标签: java tomcat samba vfs apache-commons-vfs

我正在使用vfs2(不是vfs)来访问ftp。现在我也使用smb协议,但它不起作用。 我总是得到例外:

ClassNotFoundException: org.apache.commons.vfs.provider.FileProvider

但是当我使用vfs2时,使用commons.vfs.provider而不是commons.vfs2.provider搜索类是很奇怪的 - 因为在vfs2中该类存在。

我是否想念图书馆(jar)?

我目前有:commons-vfs2-2.0.jarcommons-vfs2-sandbox-2.0.jar(必须添加以查找smb协议),jcifs-1.3.17.jarcommons-net-3.3.jarcommons-collections-3.2.1.jar,{ {1}}可能更多..

这是我完整的StackTrace:

commons-logging-1.1.1.jar

1 个答案:

答案 0 :(得分:2)

初看起来,您似乎需要commons-vfs.jar而非commons-vfs2-2.0.jar,因为commons-vfs2-2.0.jar中的包名称为org.apache.commons.vfs2.provider.jar。但这可能会导致混淆vfs和vfs2类的问题而无法正常工作。

因此请确保您已加载以下jar(仅限vfs2):

  • 公地vfs2-2.0.jar
  • 公地VFS2的沙箱-2.0.jar
  • JCIFS-1.3.17.jar
  • 和其他depending commons(网络,日志记录,......)

然后还在vfs-providers.xml内添加META-INF指向SmbFileProvider的正确类:

<provider class-name="org.apache.commons.vfs2.provider.smb.SmbFileProvider">
    <scheme name="smb"/>
    <if-available class-name="jcifs.smb.SmbFile"/>
</provider>