WebDAV Resources

本文介绍了一系列关于WebDAV的重要资源链接,包括WebDAV官方网站、Jakarta Slide项目及一个C#.NET WebDAV客户端库。这些资源对于了解WebDAV协议及其在实际项目中的应用具有很高的价值。
http://www.webdav.org/
WebDAV Resources:

[URL=http://jakarta.apache.org/slide/index.html]The Jakarta Slide Project [/URL]

[URL=http://www.webdavsystem.com/client]C# .NET WebDAV client library[/URL]


PHProjekt
Connected to the target VM, address: '127.0.0.1:56711', transport: 'socket' 13:56:10.878 [main] DEBUG org.pentaho.di.core.vfs.ConcurrentFileSystemManager - Using "C:\Users\15835\AppData\Local\Temp\vfs_cache" as temporary files store. 13:56:10.919 [main] DEBUG org.pentaho.di.core.vfs.ConcurrentFileSystemManager - Skipping provider "org.apache.commons.vfs2.provider.ftp.FtpFileProvider" because required class "org.apache.commons.net.ftp.FTPFile" is not available. 13:56:10.919 [main] DEBUG org.pentaho.di.core.vfs.ConcurrentFileSystemManager - Skipping provider "org.apache.commons.vfs2.provider.ftps.FtpsFileProvider" because required class "org.apache.commons.net.ftp.FTPFile" is not available. 13:56:10.929 [main] DEBUG org.pentaho.di.core.vfs.ConcurrentFileSystemManager - Skipping provider "org.pentaho.di.core.vfs.SftpFileSystemWindowsProvider" because required class "com.jcraft.jsch.JSch" is not available. 13:56:10.933 [main] DEBUG org.pentaho.di.core.vfs.ConcurrentFileSystemManager - Skipping provider "org.apache.commons.vfs2.provider.webdav.WebdavFileProvider" because required class "org.apache.jackrabbit.webdav.client.methods.DavMethod" is not available. 13:56:10.941 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///E:/nbgododt/国汇数仓/nbgh-dc-server/plugins 13:56:10.957 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///C:/Users/15835/.kettle/plugins 13:56:10.966 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///E:/nbgododt/国汇数仓/nbgh-dc-server/plugins/passwordencoder 13:56:10.967 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///C:/Users/15835/.kettle/plugins/passwordencoder 13:56:10.998 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///E:/nbgododt/国汇数仓/nbgh-dc-server/plugins/valuemeta 13:56:10.998 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///C:/Users/15835/.kettle/plugins/valuemeta 13:56:11.002 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///E:/nbgododt/国汇数仓/nbgh-dc-server/plugins/logging 13:56:11.004 [main] DEBUG org.apache.commons.vfs2.cache.SoftRefFilesCache - putFile: file:///C:/Users/15835/.kettle/plugins/logging org.pentaho.di.core.exception.KettleException: Unable to find plugin with ID 'Kettle'. If this is a test, make sure kettle-core tests jar is a dependency. If this is live make sure a kettle-password-encoder-plugins.xml exits in the classpath at org.pentaho.di.core.encryption.Encr.init(Encr.java:61) at org.pentaho.di.core.KettleClientEnvironment.init(KettleClientEnvironment.java:124) at org.pentaho.di.core.KettleClientEnvironment.init(KettleClientEnvironment.java:80) at org.pentaho.di.core.KettleEnvironment.init(KettleEnvironment.java:134) at org.pentaho.di.core.KettleEnvironment.init(KettleEnvironment.java:101) at org.pentaho.di.core.KettleEnvironment.init(KettleEnvironment.java:82) at com.nbgododt.dc.warehouse.listener.DcTransExecuteListener.main(DcTransExecuteListener.java:97)
最新发布
08-30
<think> 我们有两个问题需要解决: 1. 'Unable to find plugin with ID 'Kettle'' 异常 2. VFS文件系统提供者因缺少依赖类而被跳过 针对第一个问题,我们已经在上一个回答中详细说明了解决方案。这里再结合用户提到的第二个问题(VFS依赖缺失)进行综合解决。 这两个问题往往都与类路径(classpath)配置不完整或依赖缺失有关。 解决方案如下: ### 1. 确保核心插件配置正确(解决Kettle插件未找到) **步骤:** a. **检查插件配置文件存在性** 确认在类路径(classpath)中存在 `kettle-password-encoder-plugins.xml` 文件。该文件通常位于 `kettle-core.jar` 中,但需要被正确加载。 手动检查方法:解压 `kettle-core.jar`,查看是否存在 `kettle-password-encoder-plugins.xml` 文件(路径:`org/pentaho/di/core/encryption`)。 b. **验证插件目录结构** 确保在Kettle的安装目录下有 `plugins` 目录,并且其中包含 `kettle` 子目录(核心插件目录)。结构示例: ``` /path/to/kettle ├── lib ├── plugins │ └── kettle │ ├── kettle-engine.jar │ ├── kettle-core.jar │ └── ... └── ... ``` c. **设置环境变量** 设置 `KETTLE_HOME` 环境变量指向Kettle的根目录(包含 `plugins` 目录的上级目录)。 - Linux/Mac: ```bash export KETTLE_HOME=/path/to/kettle ``` - Windows: ```cmd set KETTLE_HOME=C:\path\to\kettle ``` d. **清理缓存** 删除用户主目录下的 `.kettle` 缓存文件夹: - Linux/Mac: `rm -rf ~/.kettle` - Windows: 删除 `C:\Users\{用户名}\.kettle` ### 2. 解决VFS文件系统提供者依赖缺失 VFS(虚拟文件系统)是Kettle用于访问不同文件系统(如HDFS、S3、SFTP等)的组件。当日志中出现类似以下警告时: ``` Skipping VFS provider with id [s3] : org.apache.commons.vfs2.provider.s3.S3FileProvider due to missing dependency class: com.amazonaws.services.s3.AmazonS3Client ``` 这通常是因为缺少相应的第三方依赖库(如AWS SDK for S3)。 **步骤:** a. **添加缺失的依赖** 根据你使用的VFS提供者,添加对应的依赖。例如: - 对于S3:需要添加AWS Java SDK的依赖(注意版本兼容性) - 对于Azure:需要添加Azure Storage SDK - 对于HDFS:需要添加Hadoop HDFS客户端 以Maven为例,添加S3支持: ```xml <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.1000</version> <!-- 版本需与Kettle兼容 --> </dependency> ``` b. **检查VFS插件注册** 确保 `plugins` 目录中有相应的VFS插件。例如,S3的VFS插件通常位于 `plugins/vfs-s3` 目录下。 如果没有,可以从Pentaho Marketplace下载或从其他完整安装中复制。 c. **验证类路径** 确保所有必需的JAR文件都包含在应用程序的类路径中。可以通过以下方式检查: ```java ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL[] urls = ((URLClassLoader) classLoader).getURLs(); for (URL url : urls) { System.out.println(url.getFile()); } ``` 检查输出中是否包含缺失依赖的JAR文件(如 `aws-java-sdk-s3-*.jar`)。 ### 3. 综合类路径管理(解决两个问题的共同根源) 两个问题都可能是由于类路径配置不完整引起的。因此,需要确保: - 所有Kettle核心JAR(如 `kettle-core`, `kettle-engine`)都在类路径中。 - 所有插件依赖(如VFS插件及其第三方依赖)都在类路径中。 **对于独立应用程序(非容器):** - 使用启动脚本指定类路径,例如: ```bash java -cp "lib/*:plugins/*:./" com.example.MainClass ``` 其中,`lib` 存放核心库,`plugins` 存放所有插件(包括 `kettle` 和 `vfs-*` 目录)。 **对于Maven项目:** - 确保所有必需的依赖都在 `pom.xml` 中声明,并使用 `mvn dependency:tree` 检查冲突。 - 使用 `mvn assembly:single` 构建包含所有依赖的fat jar。 ### 4. 调试插件加载过程 在启动时添加以下JVM参数,可以输出详细的插件加载日志: ```bash -Dorg.pentaho.di.core.plugins.PluginRegistry.debug=true -Dorg.apache.commons.vfs2.provider.debug=true ``` 通过日志可以确认: - `Kettle` 插件是否被正确发现和注册。 - VFS提供者是否被加载,以及缺失的具体类。 ### 5. 版本兼容性 确保所有依赖库的版本与Kettle核心版本兼容。例如,使用Kettle 8.3时,应选择与之匹配的VFS插件和第三方SDK版本。 通过以上步骤,应该能够同时解决两个问题。 §§相关问题§§ 1. 如何诊断Kettle运行时的类加载冲突问题? 2. 在容器化部署中如何确保Kettle插件的正确加载? 3. 如何为Kettle扩展自定义的VFS文件系统提供者? </think> ### 解决 Kettle 运行时异常及 VFS 依赖问题 #### 一、核心问题:`Unable to find plugin with ID 'Kettle'` **根本原因** Kettle 核心插件注册失败,通常由配置文件缺失或类路径错误引起。关键文件 `kettle-password-encoder-plugins.xml` 未正确加载[^1]。 **解决方案** 1. **验证插件配置文件** - 检查类路径中是否存在: ```bash find /path/to/lib -name "kettle-password-encoder-plugins.xml" ``` - 若缺失,从官方安装包提取该文件(位于 `data-integration/system/` 目录),复制到项目的 `resources/` 目录[^1]。 2. **修复类路径配置** - Maven 项目添加显式依赖: ```xml <dependency> <groupId>org.pentaho</groupId> <artifactId>kettle-core</artifactId> <version>8.3.0.0</version> </dependency> ``` - 非 Maven 项目确保 JAR 包含在启动命令中: ```bash java -cp "kettle-core-8.3.0.0.jar:lib/*" com.example.Main ``` 3. **清理缓存** 删除临时缓存重启应用: - Linux/Mac: `rm -rf ~/.kettle` - Windows: 删除 `%USERPROFILE%/.kettle` --- #### 二、关键问题:VFS 提供者因依赖类缺失被跳过 **根本原因** VFS(虚拟文件系统)插件(如 S3/HDFS)因缺少第三方 SDK(如 AWS JDK)无法加载。 **解决方案** 1. **补充依赖库** - 根据日志提示添加对应 SDK: ```xml <!-- 示例:修复 S3 提供者缺失 --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.12.261</version> </dependency> ``` 2. **验证插件结构** VFS 插件需符合标准目录结构: ``` plugins/vfs-s3/ ├── plugin.xml └── lib/ └── aws-java-sdk-s3-1.12.261.jar ``` 使用命令检查: ```bash unzip -l vfs-s3-plugin.jar | grep plugin.xml ``` 3. **增加调试日志** 启动时添加 JVM 参数捕获加载细节: ```bash -Dorg.apache.commons.vfs2.provider.debug=true ``` --- #### 三、综合预防措施 1. **依赖树分析** 检测冲突依赖: ```bash mvn dependency:tree -Dincludes=org.pentaho ``` 2. **容器化部署检查** Dockerfile 确保插件完整复制: ```dockerfile COPY data-integration/plugins /app/plugins COPY resources/kettle-password-encoder-plugins.xml /app/config/ ``` 3. **单元测试验证** 添加插件状态检查代码: ```java @Test public void testPluginLoaded() { PluginInterface plugin = PluginRegistry.getInstance() .getPlugin(PluginType.INTERFACE, "Kettle"); assertNotNull("Kettle plugin missing", plugin); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值