Открытое Окно браузера из программы Java

char s1[]="Hello";
char s2[]="World";

strcat(s1,s2);

Объявления переменных выделяют память для 5 символов каждый плюс завершающий байт NUL. Ваш вызов strcat записывает за этот пробел, что приводит к неопределенным результатам.

В этом случае, структура памяти, вероятно, что-то вроде этого

0 1 2 3 4  5 6 7 8 9 10 11
H e l l o \0 W o r l  d \0
^            ^
s1           s2

После strcat, результат:

0 1 2 3 4 5 6 7 8 9 10 11
H e l l o W o r l d \0 \0
^           ^
s1          s2

Что дает ты видишь. Обратите внимание, что могут быть и другие возможные результаты, программа может, например, сбой при вызове strcat.

5
задан ninesided 29 October 2008 в 21:48
поделиться

4 ответа

считав различные ответы и различные комментарии (от корреспондента), вот то, что я сделал бы

1) попробуйте этот подход Java http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory("myDir");
Process p = pb.start();

посмотрите больше об этом классе:

http://java.sun.com/developer/JDCTechTips/2005/tt0727.html#2
http://www.javabeat.net/tips/8-using-the-new-process-builder-class.html

2) попытайтесь делать это (запускающийся Firefox) от C/C ++/ruby/python и посмотрите, успешно выполняется ли это.

3) если бы все остальное перестало работать, я запустил бы программную оболочку и что программная оболочка запустила бы Firefox!!

2
ответ дан 18 December 2019 в 12:03
поделиться

Если можно сузить его к Java 6, можно использовать настольный API:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

Должен посмотреть что-то как:

    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        if (desktop.isSupported(Desktop.Action.BROWSE)) {
            try {
                desktop.browse(new URI("http://localhost"));
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
            catch(URISyntaxException use) {
                use.printStackTrace();
            }
        }
    }
9
ответ дан 18 December 2019 в 12:03
поделиться

Используйте BrowserLauncher.

Вызов его очень легок, просто пойдите

new BrowserLauncher().openURLinBrowser("http://www.google.com");
4
ответ дан 18 December 2019 в 12:03
поделиться

У Вас могла бы быть лучшая удача, если Вы читаете и отображаете стандартный вывод / потоки сообщений об ошибках, таким образом, можно поймать любой Firefox сообщения об ошибке, может распечатать.

0
ответ дан 18 December 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: