问题
The Java Web Start technology has an IntegrationService API for creating file associations. My question is whether it is possible to somehow use this API (possibly by including jnlp.jar in my app) to create file associations, but without the full Java Web Start technology (no website for the initial installation, the program is distributed with a traditional installer or as a simple executable jar file). The app in question is a desktop/swing app.
(This question arose in the comments of the question How to associate a file with a program in java)
回答1:
No web site is required to use a jnlp
file locally, just use a file URI scheme for the jnlp codebase
and jar href
.
This will let you experiment with file associations, but you'll want to do a backup and clean the Java Preferences cache first.
Addenda:
As a concrete example, this
jnlp
launches JFreeChart:<?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="file:///Users/trashgod/jnlp/" href="jfreechart-1.0.14-demo.jnlp"> <information> <title>JFreeChart 1.0.14 Demo</title> <vendor>Object Refinery Ltd</vendor> <homepage href="http://www.object-refinery.com/" /> <description>A demo for the JFreeChart class library</description> <description kind="short">JFreeChart demo application.</description> <description kind="tooltip">JFreeChart 1.0.14 Demo</description> <offline-allowed /> </information> <resources> <j2se version="1.5+" initial-heap-size="12m" max-heap-size="256m" /> <jar href="file:///opt/jfreechart/jfreechart-1.0.14-demo.jar" /> <jar href="file:///opt/jfreechart/lib/jcommon-1.0.17.jar" /> <jar href="file:///opt/jfreechart/lib/jfreechart-1.0.14.jar" /> </resources> <application-desc main-class="demo.SuperDemo" /> </jnlp>
The <association/> tag uses the attributes
mime-type
andextensions
as "a hint to the JNLP client that it wishes to be registered with the operating system as the primary handler of certain extensions and a certain mime-type."
来源:https://stackoverflow.com/questions/12322425/file-associations-in-java-using-jnlp-jar-without-full-jws