Запуск программы Java на iSeries из командной строки - PullRequest
0 голосов
/ 14 марта 2019

Я создал Java-программу и хочу запустить ее из iSeries. Я смог запустить его из QSH, поэтому я знаю, что он скомпилирован и работает нормально, но мне нужно запустить его из командной строки, а не из QSH. Для корректной работы программы требуется файл jsch-0.1.55.jar, и я не уверен на 100%, как вызвать файл jar, если программа ссылается на него.

Я пробовал

RUNJVA CLASS(ANL0106J) CLASSPATH('/JAVA/Jars/jsch-0.1.55.jar')

Это не сработало. Тогда я попробовал

RUNJVA CLASS('/JAVA/Jars.jsch-0.1.55.jar':. ANL0106J) CLASSPATH('/Java/Jars/jsch-0.1.55.jar')

Это тоже не сработало. Что я делаю не так?

1 Ответ

0 голосов
/ 15 марта 2019

Успешно проделав это много раз, ваша последняя попытка кажется довольно близкой, но измените параметр CLASS, чтобы он указывал на ваш файл класса, который содержит метод main.ANL0106J выглядит довольно странным именем класса. Примером может быть:

CLASS(com.company.test.ApplicationMain)

С CLASSPATH, указывающим на требуемые банки, используя полные пути.Например:

RUNJVA CLASS(com.company.test.ApplicationMain) CLASSPATH('/test/app.jar:/test/dependency.jar')

Чтобы немного упростить ситуацию, вы даже можете включить свою зависимость в файл JAR, используя что-то вроде maven или Gradle для создания ваших сборок, которые затем можно настроить для создания толстых jar-файлов.,По сути, это файлы jar, содержащие другие файлы JAR, от которых зависит ваше приложение.Таким образом, вы также можете быть уверены, что ваше приложение продолжит работать, даже после того, как вы обновите, например, один файл jar на вашем компьютере ibm i.Например, Shadowjar довольно легко настроить, используя проект gradle, который сделает это за вас.Тогда это всего лишь вопрос запуска задачи bootjar gradle и использования команды RUNJVA, просто указывая на ваш единственный JAR.Не попадайтесь в ад управления зависимостями, пожалуйста.Спасите себя и будущих разработчиков, используя что-то вроде Maven или Gradle.Gradle / maven может даже использоваться для управления зависимостями с помощью репозитория maven с помощью такого инструмента, как Sonatype Nexus, который также может быть размещен локально.Если в вашем JAR есть действительный манифест, вам больше ничего не нужно делать.Это выглядело бы так:

RUNJVA CLASS('/test/app.jar')

Особенно полезно для использования CI, который может собрать JAR для вас из репозитория GIT и поместить жирную банку на правильный путь, без необходимости делать одинвещь.Настроить Jenkins на as400 совсем не сложно, используя сервер приложений apache WebSphere, который можно использовать для размещения файлов WAR, проще говоря (хотя он может сделать гораздо больше, чем это: P).

Черт, использование только одной банки для команды RUNJVA также должно ускорить время, необходимое для запуска вашего приложения, поскольку ему нужно только проверить одну банку.Просто пища для размышлений.Кстати, запись maven: https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55

На заметку сторонним разработчикам java / реагировать: Да, коллеги-разработчики Java / реагировать, можно использовать команду RUNJVA для модернизации разработки ibm i для запуска загрузки SpringПриложения!Мы успешно работаем с приложениями реагирующего интерфейса, использующими внутреннюю систему с пружинной загрузкой. Работает очень быстро, как и ожидалось:)

(Тот же ответ, который вы получили в Reddit, просто на этой платформе, чтобы сделать его видимым для других, которыеищем это на Stackoverflow)

...