KNIME命令行执行 - ClassNotFoundException

时间:2017-01-20 13:26:07

标签: sql-server eclipse cmd knime

我想安排一个KNIME工作流程。只要我从KNIME GUI应用程序启动它,工作流就可以完成它的工作。当我通过命令行执行相同的工作流程时,java会抱怨 com.microsoft.sqlserver.jdbc.SQLServerDriver 无法找到(ClassNotFoundException)。

我通过以下方式调用它:

"D:\Progamme\KNIME\knime.exe" -nosplash -application -consoleLog org.knime.product.KNIME_BATCH_APPLICATION  -preferences="absolutepathto\preferences.epf" -workflowDir="absolutepathto\workflow"

由于错误消息表明java CLASSPATH中缺少内容,我还尝试添加参数

-vmargs -classpath .;"absolutepathto/sqljdbc42.jar"

但是我仍然获得了一记java,指向同样的错误......

我还尝试从knime.exe的目录中运行命令,我也尝试将JAR文件添加到Preferences - > Java - >构建路径 - >类路径变量/用户库(通过-preference参数引用)。但那没有效果。

有没有人面临同样的问题?也许还有其他第三方JAR?

所有关于数据库连接器的配置都是这样的: enter image description here 集成安全性是否会导致误导性错误?

系统规范:Windows Server 2008 R2上的KNIME 3.2.2

更新 - 从偏好设置文件中提取

/configuration/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
/configuration/org.eclipse.ui.ide/MAX_RECENT_WORKSPACES=10
/configuration/org.eclipse.ui.ide/RECENT_WORKSPACES=<list of some workspaces>
/configuration/org.eclipse.ui.ide/RECENT_WORKSPACES_PROTOCOL=3
/configuration/org.eclipse.ui.ide/SHOW_RECENT_WORKSPACES=false
/configuration/org.eclipse.ui.ide/SHOW_WORKSPACE_SELECTION_DIALOG=true

是否存在问题,因为它是多个用户之间的共享KNIME实例,并且命令行执行不知道必须选择哪个工作区?工作区是否需要以及为什么?

部分解决方案: 我终于成功了,但我不知道为什么它现在有效。我所做的是加载KNIME的全新可移植版本并运行相同的命令,只将可执行路径更改为新的便携版本。在此之前,我启动了可移植版本一次来设置工作区目录并在首选项对话框和.ini文件中注册数据库驱动程序,没有别的,与共享KNIME实例相同的配置。我真正想知道的是,从现在起,命令也在使用共享的KNIME实例。我真的不知道是什么导致了让KNIME找到驱动程序类的变化。

信息 因为我在KNIME命令行模式的共享环境中遇到了一些问题,导致不确定的执行结果,我写了一个小的.NET库。这使我更加灵活/控制工作流程执行(发生了返回代码和错误消息等)。如果您有兴趣,可以在这里找到它:KnimeNet

1 个答案:

答案 0 :(得分:0)

我采用了一种非常简单的方法:

cd "C:\Program Files\KNIME"
.\knime -nosplash -noexit -consoleLog -reset -application org.knime.product.KNIME_BATCH_APPLICATION -workflowFile="D:\Work\Knime Workflows\Output\CMD_Test.knwf" -preferences="D:\Work\Knime Workflows\Output\CMD_Test.epf"