You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2012中Pentaho「Get File Names」自2019年7月起失效

解决Windows Server 2012上Pentaho「Get File Names」步骤报错问题

这种问题我之前在处理Windows Server环境下的Pentaho任务时也碰到过,结合你提供的错误日志(提示org.apache.commons.vfs.FileNotFolderException: 无法列出"file:///Y:/20190728"的内容,因为它不是一个文件夹),大概率是Windows Server的权限配置、映射盘符的服务上下文兼容性,或者旧版本Pentaho的VFS库兼容性导致的,给你几个实用的排查和解决方向:

1. 检查共享文件夹的权限配置

  • 确保运行Pentaho的账户(如果是服务运行就是服务账户,手动运行就是当前登录账户)对Y:\20190728这个共享文件夹拥有读取、列出文件夹内容的权限。Windows Server的权限管控比Windows 7严格很多,哪怕你能在资源管理器正常访问,服务账户可能没有对应的权限。
  • 可以尝试用Pentaho的运行账户直接登录Windows Server,手动访问Y盘的目标文件夹,确认能正常查看里面的文件。

2. 替换映射盘符为UNC路径

Windows Server上的映射盘符(比如Y:\)在服务运行的上下文里经常会失效,建议把路径改成UNC格式,比如:

\\你的服务器主机名\共享文件夹名\20190728

Pentaho的VFS(虚拟文件系统)对UNC路径的兼容性更好,能避免映射盘符在服务环境下的识别问题。如果是跨域共享,还要确保运行账户有对应的域权限。

3. 升级Pentaho或更新VFS库

你使用的是Pentaho 5.3.0.0版本,这个版本比较老旧(2015年构建),其依赖的commons-vfs库对Windows Server 2012的文件系统支持存在兼容性bug:

  • 优先考虑升级Pentaho到较新的稳定版本(比如8.x或9.x系列),新版本修复了不少VFS相关的兼容性问题。
  • 如果暂时无法升级,可以尝试手动替换Pentaho安装目录lib文件夹下的commons-vfs*.jar文件为更新的稳定版本(注意要选择与Pentaho版本兼容的VFS版本,避免依赖冲突)。

4. 提前验证路径有效性

可以在「Modified Java Script Value」步骤里添加代码,提前验证目标路径是否存在且为文件夹:

var folder = new java.io.File(folderrow);
if (!folder.exists()) {
    logError("路径不存在: " + folderrow);
} else if (!folder.isDirectory()) {
    logError("路径不是文件夹: " + folderrow);
}

这样能提前排查路径是否存在识别错误,也能帮助你确认Pentaho是否真的能访问到目标文件夹。

附错误日志详情

Transformation 2 - 从XML文件[file:///D:/Pentaho/CN-EAI-PentahoTool/sourceCode/BSCReadFilesInFolder.ktr]加载转换
2019/07/28 23:45:04 - readFilesInFolder - 转换[readFilesInFolder]的调度已启动
2019/07/28 23:45:04 - Get rows from result.0 - 处理完成(I=0, O=0, R=1, W=2, U=0, E=0)
2019/07/28 23:45:04 - Write to log.0 - 
2019/07/28 23:45:04 - Write to log.0 - ------------> 第1行------------------------------
2019/07/28 23:45:04 - Write to log.0 - folderrow = Y:\20190728
2019/07/28 23:45:04 - Write to log.0 - 
2019/07/28 23:45:04 - Write to log.0 - ====================
2019/07/28 23:45:04 - Modified Java Script Value.0 - 优化级别设置为9。
2019/07/28 23:45:04 - Write to log.0 - 处理完成(I=0, O=0, R=1, W=1, U=0, E=0)
2019/07/28 23:45:04 - FileInputList - 错误(版本5.3.0.0-213,构建版本1,构建于2015-02-02_12-17-08,构建者buildguy) : org.apache.commons.vfs.FileNotFolderException: 无法列出"file:///Y:/20190728"的内容,因为它不是一个文件夹。
2019/07/28 23:45:04 - FileInputList - at org.apache.commons.vfs.provider.AbstractFileObject.getChildren(Unknown Source)
2019/07/28 23:45:04 - FileInputList - at org.pentaho.di.core.fileinput.FileInputList.createFileList(FileInputList.java:243)
2019/07/28 23:45:04 - FileInputList - at org.pentaho.di.trans.steps.getfilenames.GetFileNamesMeta.getDynamicFileList(GetFileNamesMeta.java:679)
2019/07/28 23:45:04 - FileInputList - at org.pentaho.di.trans.steps.getfilenames.GetFileNames.processRow(GetFileNames.java:176)
2019/07/28 23:45:04 - FileInputList - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2019/07/28 23:45:04 - FileInputList - at java.lang.Thread.run(Thread.java:745)
2019/07/28 23:45:04 - Modified Java Script Value.0 - 处理完成(I=0, O=0, R=1, W=1, U=0, E=0)

内容的提问来源于stack exchange,提问作者santhosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:44:08