KNIME File Reader节点对话框创建报错:URI非层级化求助
解决KNIME File Reader节点"URI is not hierarchical"报错问题
这个报错我之前在Windows环境下用KNIME时也碰到过,结合你提供的日志来看,核心原因很明确:File Reader节点的历史路径记录里存了格式不兼容的路径(比如带file://前缀的URI格式路径,或者网络共享路径的解析异常),导致节点在加载对话框时没法把这个URI转换成Windows系统能识别的层级式文件路径——日志里的WindowsUriSupport.fromUri调用失败就是最好的证明。
给你几个靠谱的解决办法,按顺序试就行:
清理File Reader的历史路径
- 打开KNIME,点击顶部菜单的
File→Preferences - 在偏好设置窗口里找到
KNIME→File History - 右侧列表里找到
File Reader对应的历史记录,把所有看起来格式奇怪的路径(比如带file://的)都删掉 - 重启KNIME,再打开File Reader节点试试
- 打开KNIME,点击顶部菜单的
手动输入标准本地路径
如果清理历史后能正常打开节点对话框,直接输入不带任何前缀的Windows本地路径,比如C:\your_folder\your_data.csv,别用file://C:/your_folder/your_data.csv这种URI格式。升级KNIME版本
从日志时间来看你用的是2018年的老版本,这类路径解析的bug在后续的KNIME稳定版里已经被修复了,升级到4.x或5.x的正式版能从根源上避免这个问题。
附上你提供的错误日志,方便参考:
2018-01-09 18:50:31,599 : DEBUG : main : Node : File Reader : 0:206:208 : Error while creating node dialog for 'File Reader': URI is not hierarchical java.lang.IllegalArgumentException: URI is not hierarchical at sun.nio.fs.WindowsUriSupport.fromUri(WindowsUriSupport.java:122) at sun.nio.fs.WindowsFileSystemProvider.getPath(WindowsFileSystemProvider.java:92) at java.nio.file.Paths.get(Paths.java:138) at org.knime.core.util.FileUtil.resolveToPath(FileUtil.java:1127) at org.knime.core.node.util.FilesHistoryPanel$FileReaderCheckLabel.checkLocation(FilesHistoryPanel.java:328) at org.knime.core.node.util.FilesHistoryPanel.fileLocationChanged(FilesHistoryPanel.java:952) at org.knime.core.node.util.FilesHistoryPanel.access$2(FilesHistoryPanel.java:946) at org.knime.core.node.util.FilesHistoryPanel$4.insertUpdate(FilesHistoryPanel.java:513) at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:201) at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:748) at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707) at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130) at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:669) at javax.swing.text.JTextComponent.setText(JTextComponent.java:1669) at javax.swing.plaf.basic.BasicComboBoxEditor$BorderlessTextField.setText(BasicComboBoxEditor.java:144) at javax.swing.plaf.basic.BasicComboBoxEditor.setItem(BasicComboBoxEditor.java:87) at com.sun.java.swing.plaf.windows.WindowsComboBoxUI$WindowsComboBoxEditor.setItem(WindowsComboBoxUI.java:507) at javax.swing.JComboBox.configureEditor(JComboBox.java:1404) at javax.swing.plaf.basic.BasicComboBoxUI$Handler.contentsChanged(BasicComboBoxUI.java:1864) at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118) at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93) at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:131) at org.knime.core.node.util.FilesHistoryPanel.updateHistory(FilesHistoryPanel.java:844) at org.knime.core.node.util.FilesHistoryPanel.<init>(FilesHistoryPanel.java:631) at org.knime.base.node.io.filereader.FileReaderNodeDialog.createFileNamePanel(FileReaderNodeDialog.java:283) at org.knime.base.node.io.filereader.FileReaderNodeDialog.<init>(FileReaderNodeDialog.java:261) at org.knime.base.node.io.filereader.FileReaderNodeFactory.createNodeDialogPane(FileReaderNodeFactory.java:126) at org.knime.core.node.Node$1.run(Node.java:2069) at org.knime.core.node.util.ViewUtils$3.run(ViewUtils.java:353) at org.knime.core.node.util.ViewUtils$2.run(ViewUtils.java:155) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 2018-01-09 18:50:36,581 : DEBUG : main : NodeContainerEditPart : : : File Reader 0:206:208 (IDLE)
内容的提问来源于stack exchange,提问作者Luca Monno
相关产品推荐
相关产品推荐

