Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Runtime.getRuntime().exec()????


Автор: unkis 5.5.2006, 13:48
Ребята, столкнулся с такой проблемой, нужно запустить Internet Explorer и передать ему *.html страницу.

Проблема заключается в том, что если передоваемая хтмл страница находится в пути с пробелом, то ничего не передаётся.

к примеру:
C:\Program Files\Internet Explorer\iexpolrer.exe  C:\h  elp\deu\index.html

в данном примере в help  пробел и поэтому ничего не получается.

как быть?


Зарания благодарен.

 

Автор: sergejzr 5.5.2006, 13:51
попробуй пробелы на %20 заменить. А вообще есть компонента для запуска браузера (мы её в охотнике применяли) 

Автор: Beard 5.5.2006, 13:53
посмотри
http://forum.vingrad.ru/index.php?showtopic=86802 

Автор: sergejzr 5.5.2006, 13:59
Опера
Код

opera -remote openURL({0},new-tab)

Мозилла (для фаерфокс аналогично, только с firefox)
Код

mozilla -remote openURL({0},new-tab)

ИЕ
Код

rundll32 url.dll,FileProtocolHandler {0}


{0} Заменяй на УРЛ

А вот компонента: http://ostermiller.org/utils/Browser.html


 

Автор: unkis 5.5.2006, 14:07
спасибо, только я не совсем понял

что такое new String[0]

и как быть с параметрами в моём случаии.

я делаю это так:

Код

String[] arguments = new String[] {"C:\Program Files\Internet Explorer\iexpolrer.exe","C:\h  elp\deu\index.html"};

             
Process process = Runtime.getRuntime().exec(arguments);
 

Автор: powerOn 5.5.2006, 14:07
Эх, скоро, скоро выдет Java SE 6 ("Mustang")  там таких проблем не будет: 
будет добавлена (вернее уже есть) возможность запускать файлы, т.е. открывать их ассоциированными программами... я смотрел bet-у остался доволен....  smile  

Автор: unkis 5.5.2006, 14:09
Цитата(sergej.z @ 5.5.2006,  13:59)
Опера
Код

opera -remote openURL({0},new-tab)

Мозилла (для фаерфокс аналогично, только с firefox)
Код

mozilla -remote openURL({0},new-tab)

ИЕ
Код

rundll32 url.dll,FileProtocolHandler {0}


{0} Заменяй на УРЛ

А вот компонента: http://ostermiller.org/utils/Browser.html

та нехотелось бы мне брать другие библиотеки. 

Автор: batigoal 5.5.2006, 14:15
А если попробовать в кавычки путь заключить? 

Автор: Beard 5.5.2006, 14:16
Ага, да iexplore.exe правильно написать!
Так точно заработает:
Код

        String[] arguments = new String[] {"\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"","C:\\h  elp\\deu\\index.html"};
        
        Process process = Runtime.getRuntime().exec(arguments);

  

Автор: unkis 5.5.2006, 14:24
и с кавычками тоже не вызывает 

Автор: Beard 5.5.2006, 14:25
А что пишет?
В командной строке таким образом вызвыается? 

Автор: unkis 5.5.2006, 14:31
Цитата(Beard @ 5.5.2006,  14:16)
Ага, да iexplore.exe правильно написать!
Так точно заработает:
Код

        String[] arguments = new String[] {"\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"","C:\\h  elp\\deu\\index.html"};
        
        Process process = Runtime.getRuntime().exec(arguments);


работает, только есть одно, но.

Значит есть одна большая программа, она расположена в папке с пробелом.
это большая программа вызывает другую программу, и вот после такого вызова в вызваной програме я пытаюсь открвть html страницу и тогда оно не работает, а если я запускаю эту программу напрямую, без вызова через другую программу, то всё работает.

наверно то что я описал выше смешно и не понятно. 

Автор: sergejzr 5.5.2006, 14:35
Цитата(unkis @  5.5.2006,  12:09 Найти цитируемый пост)
та нехотелось бы мне брать другие библиотеки.  


Я специально без библиотек и написал smile
Цитата(unkis @  5.5.2006,  12:09 Найти цитируемый пост)
rundll32 url.dll,FileProtocolHandler {0}

Это строка вызова ИЕ. (То есть её в ехец надо передать)
 

Автор: unkis 5.5.2006, 14:41
Цитата(sergej.z @ 5.5.2006,  14:35)
Цитата(unkis @  5.5.2006,  12:09 Найти цитируемый пост)
та нехотелось бы мне брать другие библиотеки.  


Я специально без библиотек и написал smile
Цитата(unkis @  5.5.2006,  12:09 Найти цитируемый пост)
rundll32 url.dll,FileProtocolHandler {0}

Это строка вызова ИЕ. (То есть её в ехец надо передать)

Спаибо это всё хорошо, но если у пользователя стоит другой броузер, не опера, не мозила, и не explorer
тогда что?
нужно общее решение этой проблемы. 

Автор: Beard 5.5.2006, 14:44
Тогда просто делаешь
Код

Runtime.getRuntime().exec("cmd.exe /r " + fileName)

и вызывается программа, связанная с расширением что у fileName (под виндой) 

Автор: unkis 5.5.2006, 14:52
Цитата(Beard @ 5.5.2006,  14:44)
Тогда просто делаешь
Код

Runtime.getRuntime().exec("cmd.exe /r " + fileName)

и вызывается программа, связанная с расширением что у fileName (под виндой)

Спасибо и тебе большое,

но оно только под виндой будет так
а под линуксом или маком.

Изверяюсь что я вас уже закалебал.

Самое интересное, что если прямой старт этой проги то всё работает без проблем.

А вот если эту прогу вызывает другая прога, при это вызывающая программа содержит в своём пути пробелы, то ничего не запускается.

странно. 

тут какая-то проблемма с путями и пробелами
 

Автор: batigoal 5.5.2006, 15:56
Цитата(unkis @  5.5.2006,  15:52 Найти цитируемый пост)
но оно только под виндой будет так
а под линуксом или маком.

Тогда лучше взять библиотеку, предложенную sergej.z - она, кажется, кросплатформенна и браузеронезависима. 

Автор: sergejzr 5.5.2006, 16:24
Угу и даже в виде исходника smile  

Автор: unkis 8.5.2006, 12:21
Цитата(Lamer George @ 5.5.2006,  15:56)
Цитата(unkis @  5.5.2006,  15:52 Найти цитируемый пост)
но оно только под виндой будет так
а под линуксом или маком.

Тогда лучше взять библиотеку, предложенную sergej.z - она, кажется, кросплатформенна и браузеронезависима.

а эту библиотеку можно использовать в комерческих программах?

Зарания благодаре. 

Автор: ALKS 8.5.2006, 12:25
Цитата(unkis @ 8.5.2006,  12:21)
а эту библиотеку можно использовать в комерческих программах?

Зарания благодаре.

Вот ведь лентяй! smile

внизу страницы по линку что написано?
Код

License

Copyright (c) 2001-2005 by Stephen Ostermiller and other contributors

The OstermillerUtils library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

читать надо а не вопросы задавать smile 

Автор: unkis 8.5.2006, 13:18
Ребята извените, я это видел, просто не совсем понимаю что означает GNU License?
можно ли при такой лицензии использовать библиотеки в комерчиских проектах?

Зарания благодарен. 

Автор: sergejzr 8.5.2006, 13:20
Нет, в коммерческих нельзя, но блин! там же две с половиной строчки кода! Почитай, разберись, да напиши свой класс! smile 

Автор: LSD 8.5.2006, 13:24
Цитата(sergej.z @  8.5.2006,  14:20 Найти цитируемый пост)
Нет, в коммерческих нельзя

Как внешнюю библиотеку, можно. Ведь пишут же под Linux комерческий софт. 

Автор: powerOn 8.5.2006, 15:03
ИМХО, нужно лицензию читать, поскольку одно дело распростронять библиотеку с комерческим проектом "как есть" (без её изменения), 
а другое когда ты добавил в библиотеку N строк кода и пытаешься её продать .... 
  

Автор: unkis 8.5.2006, 15:48
Цитата(MoonCat @ 8.5.2006,  15:03)
ИМХО, нужно лицензию читать, поскольку одно дело распростронять библиотеку с комерческим проектом "как есть" (без её изменения), 
а другое когда ты добавил в библиотеку N строк кода и пытаешься её продать ....

меня как раз и интересует
Цитата

распростронять библиотеку с комерческим проектом "как есть" (без её изменения), 
 

я так понимаю что тогда можно её использовать? 
или? 

Автор: ALKS 8.5.2006, 16:10
Цитата(sergej.z @ 8.5.2006,  13:20)
Нет, в коммерческих нельзя, но блин! там же две с половиной строчки кода! Почитай, разберись, да напиши свой класс! smile

GNU General Public License. это почему это в коммерческих целях нельзя????? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)