Выполнение командной строки KNIME - ClassNotFoundException

Я хотел бы запланировать рабочий процесс 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"

Так как сообщение об ошибке сигнализирует об отсутствии содержимого в CLASSPATH Java, я также попытался добавить параметры

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

Но все равно я зарабатываю java пощечину, указывая на ту же ошибку...

Я также попытался запустить команду из каталога knime.exe и также попытался добавить файл JAR в "Предпочтения" -> "Java" -> "Путь сборки" -> "Переменная Classpath" / "Библиотеки пользователей" (на которые ссылается аргумент -preference). Но это не имело никакого эффекта.

Кто-нибудь сталкивался с такими же проблемами? Может быть, с другими сторонними JAR?

Все дело в соединителе базы данных, который настроен так: введите описание изображения здесь Может ли встроенная защита вызвать ошибочную ошибку?

Спецификация системы: KNIME 3.2.2 в Windows Server 2008 R2

Обновить - извлечь из файла настроек

/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 ответ

Я использовал очень минимальный подход:

      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"
Другие вопросы по тегам