Свяжите тип файла с приложением Java Swing

Я создаю приложение Java Swing, и мне нужно установить мою программу в качестве программы по умолчанию для расширения файла .mcsd (тип MIME text/mcsd). Это должно работать в Windows, и было бы неплохо, если бы оно работало и в OS X/Linux. Я новичок в Java (3 или 4 месяца), поэтому, пожалуйста, не забрасывайте меня всякими экспертными рассуждениями.

Я видел связывание пользовательского расширения файла с java-приложением в windows, но я бы предпочел не использовать Java Web Start. Если возможно, я также хотел бы знать, как установить значок этого типа файла. Я нашел exe4j как способ создания .exe и планирую используйте его, но если это не лучший инструмент для преобразования инфы в exe или кто-то знает что-то лучше, не стесняйтесь сказать мне. Другое дело: мне нужно иметь возможность получить данные из этого файла после того, как программа открылась.

Итак, мой вопрос: как мне это сделать?


person KFox    schedule 15.03.2013    source источник
comment
Потому что я хотел бы иметь собственный установщик, который просто устанавливает программу, не открывая веб-страницу или что-то еще. Если это не так, как мы начинаем, то я с удовольствием его использую.   -  person KFox    schedule 16.03.2013
comment
Сделал бы я это, используя openConnection() в объекте URL? и где я могу найти учебник по JNLP и JWS, кроме docs.oracle.com, я нахожу эти учебники немного трудными для чтения (это не сбивает с толку, внешний вид просто завораживает).   -  person KFox    schedule 16.03.2013
comment
А как насчет получения данных/пути к открытому файлу?   -  person KFox    schedule 16.03.2013


Ответы (1)


Разверните приложение. с Java Web Start:

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

См. демонстрацию файловых служб в качестве примера JNLP, который заявляет об интересе к .zzz тип файла.

Вот как ассоциация объявляется в JNLP:

<association
  extensions="zzz"
  mime-type="text/sleepytime" />

JWS поставляется Oracle и работает в Windows, *nix и OS X.

... но я бы предпочел не использовать Java Web Start. Потому что я хотел бы иметь собственный установщик, который просто устанавливает программу, не открывая веб-страницу или что-то еще. Если (веб-старт) работает не так, то я с удовольствием его использую.

JWS работает через Интернет или сеть. Но если вы можете вызвать открытие URL-адреса (в JNLP) с рабочего стола, не нужно открывать какой-либо браузер.

Сделал бы я это, используя openConnection() в объекте URL?

Я бы использовал Desktop или BasicService API.

Desktop.getDesktop().browse(uri);

boolean result = basicService.showDocument(url);

Как указано в BasicService демонстрации.

В Java 6+ вызов для отображения другого запускаемого веб-файла (например, BasicService.showDocument(another.jnlp))) будет передан непосредственно в JavaWS без появления окна браузера.

Я ожидаю, что это всегда было верно для Desktop API, учитывая, что клиент JWS является потребителем по умолчанию для этого типа файлов.

person Andrew Thompson    schedule 16.03.2013