Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 10:47   #1
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
Восклицание Запуск JAR файлов

Доброго времени суток. Возник такой вопрос,каким образом можно запускать исполняемые jar из делфи? Пробовал запускать cmd через CreateProcess,ShellExecute и WinExec,передавая ей в качестве запуск jawac c параметрами,но на части машин запускается, на другой части нет. Использование Try-Ex ни к чему не приводит,исключений не происходит. Подскажите,в чем проблема? Может компоненты есть какие?
CraZZy RabbIt вне форума Ответить с цитированием
Старый 03.05.2012, 18:24   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
передавая ей в качестве запуск jawac c параметрами
Зачем ? javac - компилятор.
p51x вне форума Ответить с цитированием
Старый 04.05.2012, 01:35   #3
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

извиняюсь,описался. javaw
CraZZy RabbIt вне форума Ответить с цитированием
Старый 04.05.2012, 09:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

если java установлена на компьютере (т.е в проводнике jar запускается по клику), тогда банально через
Цитата:
The ShellExecute function opens or prints a specified file. The file can be an executable file or a document file. See ShellExecuteEx also.

HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
вызывать так:
Код:
uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(0,'open','D:\projects\ProjectUsers.jar',nil,nil,SW_SHOWNORMAL);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2012, 12:11   #5
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

я ж написал выше,через все возможные функции запускаю,НО на части комплютеров запускается на другой части нет!! Не известно,есть ли ассоциация джара с явой на запуск,нужно 100% способ запуска,независимо от месторасположения явы,ее записей в реестре,переменных окружения и прочее.
CraZZy RabbIt вне форума Ответить с цитированием
Старый 04.05.2012, 12:29   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а на части компов выдает что javaw не является внутренней командой и тп?
вы уже привязываетесь, так как не всегда java прописана в path.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.05.2012, 12:54   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Oracle JVM почти всегда прописана в path.

Проблема может возникнуть, если стоит java x64, а вызвать пытаетесь из x32 приложения. Полный путь на суснатив\javaw.exe спасает.

Если вам нужен 100% запуск независимо ни от чего, делайте, как делают крупных софтверные компании, таскайте рабочую jre с собой и запускайте \bin\jre\javaw.exe
p51x вне форума Ответить с цитированием
Старый 04.05.2012, 13:25   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от p51x
Если вам нужен 100% запуск независимо ни от чего, делайте, как делают крупных софтверные компании, таскайте рабочую jre с собой и запускайте
\bin\jre\javaw.exe
вот это, имхо, единственное надежное решение.
Ведь на некоторых компьютерах JAVA вообще может быть не установлена!
(Да-да! Бывает и такое! )


правда, решение явно не минималистичное
у меня JAVA (TM) 6 Update 22 занимает ~ 90 Мб
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2012, 23:29   #9
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

Ява установлена везде,но может быть как 64 так и 32 битная.Приложение х86.
Цитата:
Полный путь на суснатив
можно подробнее?
CraZZy RabbIt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск файлов Михаил Юрьевич Общие вопросы Delphi 7 27.03.2012 01:41
Запуск jar revanatar Общие вопросы по Java, Java SE, Kotlin 4 22.10.2011 20:01
Запуск файлов по расписанию Roll1n Софт 6 22.01.2009 20:45
Запуск файлов workres Win Api 3 02.07.2008 21:56
Запуск файлов программы d_slava Помощь студентам 2 17.06.2008 11:22