![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Запускаю из приложения бат файл
Бат файл запускает другое java-приложение, которому нужно в качестве аргумента передать строку message. Как? ЗЫ. По форуму искал, возможно плохо ![]() |
|||
|
||||
Temdegon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
В командный файл вроди бы параметры передаются обычно через пробел: "myBat.bat param1 param2"
И принимаются в %номер_параметра в самом файле
а в фале этот параметр будет переменной %1, если я не ошибаюсь === Хотя, нифига, наверное получится два параметра, т.к. в строке есть пробел. может прокатит строку в кавычки или в апострафы взять, чтоб она в один параметр попала === Проверил, что бы не разбивалась по пробелам надо в двойные кавычки заключить переменную: Process proc = rt.exec("C:/run.bat" + " \"" + message + "\""); тогда бат-файл
выведет Hello Vingrad! Это сообщение отредактировал(а) Temdegon - 12.1.2009, 02:09 |
||||
|
|||||
javaman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Там же есть еще один метод exec с массивом String[]. Первым элементом массива будет комманда, а далее идут её аргументы.
Это сообщение отредактировал(а) javaman - 12.1.2009, 07:47 |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 5 Всего: 38 |
а почему нельзя напрямую вызвать то java-приложение? Наверняка это jar, а в нем есть main-class, который и принимает эти параметры.
А то у тебя под виндой-то будет работать bat, а под остальными осями... -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Всем спасибо, позже попробую различные варианты
![]() MisterCleric, не, пока джара для запуска нет ![]() ![]() |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 5 Всего: 38 |
Подключаешь этот jar в classpath своего приложения. Находишь в его манифесте директиву Main-Class.
Создаешь его инстанс вызываешь метод main этого объекта этого класса со своими параметрами. Можно, например еще этот вызов обернуть в отдельный поток да еще с атрибутом setDaemon(true) и вообще закрыть свое приложение -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Runtime.exec() запускает только приложения, а не текстовые файлы.
Для того чтобы выполнить команды которые прописаны в bat файле, надо запустить интерпретатор командных файлов (cmd.exe). И передать ему в качестве параметра имя командного файла который надо выполнить. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
garbuz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Возвращаюсь к старой теме ![]() Появился jar файл, теперь отпала необходимость использовать промежуточный bat файл. Пытаюсь запустить второе приложение из первого, запуск происходит в сервлете в новом потоке, все jar файлы второго приложения добавил в classpath 1-ого приложения через IDE (идея)
В итоге
Судя по стектрейсу эксепшен кидается где-то на стороне томката, только вот непонятно как это бороть... Джарники-то я добавил в classpath приложения, Импорты сделал, все вроде нормально... ![]() Это сообщение отредактировал(а) garbuz - 16.2.2009, 12:54 |
||||||
|
|||||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Кажется тут нужен отдельный класслоадер... я прав? или же можно без него обойтись?
Еще раз скажу, что из веб приложения вызываю приложение, которое разнесено по нескольким джарам, лежащими в файловой системе. Второму приложению нужно передать массив с параметрами. Добавление этих джаров в classpath приложения (добавляю через IDE) не помогает ![]() Добавлено через 5 минут и 37 секунд Итак, еще раз. Есть веб приложение, крутится на томкате. Из него мне надо вызвать другое приложение, которое лежит в файловой системе, при этом передать ему массив с параметрами. Второе приложение, что что мне надо запустить, состоит из нескольких джар файлов, которые используют друг друга в процессе работы. Так вот. Делал сперва это через бат файл, потом прочитал что этоизврат запускать джаву из джавы через батник. Решил вызывать напрямую, благо появился джар файл, который можно "запустить". Сейчас эти джарники добавил в класспас моего приложения через IDE, ну т.е. просто в либы добавил, на сервер они не деплоятся, естественно их серверу не найти... Короче вот так. Как лучше поступить? |
|||
|
||||
ivg |
|
||||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
У этого второго приложения JavaDoc или исходники есть?
Я не пойму, почему нельзя вызвать напрямую из вашего кода нужный функционал, точно так же как, ну например, для log4j, вы методы вызываете. Зачем вот это:
Почему нельзя сделать чтоб деплоились? Или положить в папку, где загрузчики классов Tomcat'а их найдут? |
||||||
|
|||||||
garbuz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Теперь я не понимаю вас. :(
Пытался вызвать метод main другого приложения, естественно ничего не получилось, потом попробовал через рефлекшн, тоже ничего не вышло.
Попробовал и в либы приложения добавит в WEB-INF, и в папку lib томката, все равно что-то не хочет. |
||||||
|
|||||||
ivg |
|
||||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
Что делает метод main(). Разбирает командную строку, и в соответствии с этими параметрами выполняет какие-то действия. Зачем вам "кодировать" эти параметры:
Каждый раз видимо по разному "не хочет". Надо при каждой ошибке анализировать стек-трейс и устранять. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |