【发布时间】:2017-01-20 13:26:06
【问题描述】:
我想安排一个 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
【问题讨论】:
-
在 GUI 和批处理执行期间,您的工作流目录和首选项是否指向同一个工作区?我认为在 KNIME 注册数据库驱动程序时应该加载相同的首选项。
-
嗨,Gábor,我不确定我是否真的明白了这一点。如何在命令行执行期间将 KNIME 指向特定的工作区?我从我的首选项文件中添加了一些关于工作区的行。
-
我认为您可以使用
-data选项来指定包含首选项的工作区。尽管这可能不应该在不同的 KNIME 进程之间共享。也许您从工作区导出的首选项不包含 JDBC 驱动程序设置? (您粘贴的内容似乎没有引用它们。)
标签: sql-server eclipse cmd knime