0

我想安排一个 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 -> Build Path -> Classpath Variable / User Libraries(通过 -preference 参数引用)。但这没有任何效果。

有人遇到过同样的问题吗?也许与其他第三方 JAR 一起使用?

这完全是关于这样配置的数据库连接器: 在此处输入图像描述 集成安全性是否可能会导致误导性错误?

系统规格: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

4

1 回答 1

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"
于 2021-08-04T04:22:16.143 回答