Ярлык и значок Java JNLP на рабочем столе - PullRequest
1 голос
/ 02 марта 2012

Java прекрасно интегрируется с настольной ОС пользователя через JNLP. Мое программное обеспечение отображается не только в виде значка на рабочем столе, но и отображается в списке установленных программ на панели управления (Windows 7). Я также смог получить файл JNLP для автоматической настройки сопоставления файлов. Теперь, если пользователь дважды щелкнет файл, сохраненный моей программой (файл pxml), программа запустится. Благодаря JNLP эта отличная интеграция с рабочим столом происходит без проблем благодаря веб-запуску. Остается одна проблема: как заставить мою программу загружать файл данных, по которому пользователь дважды щелкает мышью? Файл pxml имеет тот же значок, что и моя программа, и JNLP создал сопоставление файлов, поэтому Windows знает, как запустить мое программное обеспечение, когда пользователь пытается открыть файл pxml. Но как моя программа узнает, чтобы открыть этот файл при запуске?

Ниже приведена часть файла JNLP для справки, взято с Proctinator.com

<jnlp  spec="6.0+" codebase="http://proctinator.com/dist" >
  <information>
    <title>The Proctinator</title>
    <vendor>Smart Software Solutions, INC.</vendor>
    <homepage href="http://proctinator.com"/>
    <description kind="short">The Proctinator exam scheduling software</description>
    <icon kind="splash" href="splashScreen.jpg" />
    <icon kind="shortcut" href="bigP.jpg" />
    <offline-allowed/> 
    <association extensions="pxml" mime-type="application/pxml"/>
    <shortcut online="false">
      <desktop/>
    </shortcut>
  </information>
  <resources>    <j2se version="1.6+"/> ...  </resources>
<application-desc main-class="thornworks.proctor.GUI"/>

1 Ответ

1 голос
/ 10 марта 2012

Чтобы открыть связанный файл с запуском Java Web Start, используйте второй элемент массива параметров, переданный в main(String[] args). Первый элемент будет «-open», когда вы запустите приложение, дважды щелкнув файл, и args [1] сохранит путь к файлу, который мы хотим открыть при запуске. Эта функция действительно делает Java-приложение похожим на нативное настольное приложение.

Я не смог найти это в документации JNLP.

Вот пример основного метода, который реализует эту функцию. FileFunction - это класс со статическими методами для ввода-вывода файла приложения.

public static void main(String[] args) {
    GUI win = new GUI(null);
    if(args.length==2) {
        win = new GUI(null);
        StringBuilder params = new StringBuilder();
        for(String s : args) {
            params.append(s);
            params.append("\n");
        }
        JOptionPane.showMessageDialog(null, params);
        try {
            FileFunction.loadList(new FileInputStream(new File(args[1])));
        }
        catch(IOException ioe) {
            FileFunction.showFileError(ioe);
        }
    }
...