Java JNLP文件关联:如何打开双击的文件?

Java JNLP文件关联:如何打开双击的文件?,java,swing,jnlp,Java,Swing,Jnlp,我有以下JNLP: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0.10//EN" "http://java.sun.com/dtd/JNLP-6.0.10.dtd"> <jnlp spec="6.0.10" version="1.63" codebase="http://foo.exampl

我有以下JNLP:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0.10//EN" "http://java.sun.com/dtd/JNLP-6.0.10.dtd">
<jnlp spec="6.0.10" version="1.63" codebase="http://foo.example.com/msi" href="Foo.jnlp">
    <information>
        <title>Foo</title>
        <vendor> Foo Systems, Inc.</vendor>
        <homepage href="http://Foo.com"/>
        <description>Foo Viewer/Editor Application</description>
        <icon href="splash.gif" width="425" height="102" kind="splash"/>
        <icon href="Foo.gif" width="64" height="64"/>
        <offline-allowed/>
        <shortcut>
            <desktop/>
            <menu submenu="Foo Systems, Inc."/>
        </shortcut>
        <association mime-type="application-x/wlog" extensions="wlog"/>
        <association mime-type="application-x/mplot" extensions="mplot"/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.6+" initial-heap-size="32m" max-heap-size="255m"/>
        <jar href="jars_deployment/TimingFramework-1.0.jar"/>
        <jar href="jars_deployment/iText-2.1.5.jar"/>
        <jar href="jars_deployment/jai_codec.jar"/>
        <jar href="Foo.jar"/>
        <jar href="jars_deployment/TimingFramework-1.0.jar"/>
        <jar href="jars_deployment/iText-2.1.5.jar"/>
        <jar href="jars_deployment/jai_codec.jar"/>
        <jar href="jars_deployment/jsch-20090402.jar"/>
        <property name="apple.laf.useScreenMenuBar" value="true"/>
        <property name="apple.awt.graphics.UseQuartz" value="false"/>
        <property name="com.apple.mrj.application.apple.menu.about.name" value="Foo"/>
        <property name="java.util.logging.config.file" value="/Users/Shared/logging.properties"/>
    </resources>
    <application-desc main-class="com.prosc.msi.editor.ui.test.Sandbox"/>
</jnlp>

福
富系统公司。
Foo查看器/编辑器应用程序
几乎一切都在运转。当我双击一个.wlog文件时,它会打开我的应用程序。但是,它没有打开正确的文件。我在某个地方读到JNLP应该将参数传递给main方法,指示哪个文件导致了应用程序的启动,但这并没有发生(在OSX10.6上)。我在应用程序的
main
方法中得到一个空数组

可能与此无关,我的启动屏幕不工作:(


关于如何使其工作的任何提示?

在Mac OS X上的捆绑应用程序中,您可以实现,如Mac OS X参考库示例所示:

通过实现
handleOpenFile()
方法并在其
Info.plist
文件中注册受支持的文件类型,该示例还支持从查找程序处理文档


AddiMun:Debug;取而代之的是,它提供了代码> GETApple().StutOpenFielHANDLILE()>

< P>在Mac OS X上的捆绑应用程序中,如Mac OS X参考库示例所示,可以实现:

通过实现
handleOpenFile()
方法并在其
Info.plist
文件中注册受支持的文件类型,该示例还支持从查找程序处理文档


附录:被弃用;取而代之的是,它提供了<代码> GETApple().StutOpenFieldHell() >

< P>关于飞溅窗口
BR/> 我认为该应用程序只是缺少了你的图像的正确路径。 在本例中,就像您提到的代码库:



就像你在图中说的:

然后,您的图像必须在
http://foo.example.com/msi/splash.gif


你可能想确定图像在那个地方……这就是我认为可能的原因


关于文件关联。

我现在在同一个平台上工作,它似乎在从JNLP API添加服务时工作。该服务用于注册应用程序,就像注册单实例一样。因此,无论何时启动应用程序,它都可以检索用于调用应用程序的参数。在这种情况下,您可以n使用它查看双击的文件名。 在上面的页面中,您可以找到关于该服务的示例和简短的解释。

我发现的问题是,在您第一次运行应用程序时,我无法看到文件名。 我的意思是,这项服务应该在第一次注册应用程序后,您将看到用于启动应用程序的参数。因此,使用这项服务,如果您第一次通过双击关联文件打开应用程序,您将错过这些参数,直到下一次双击它。您的应用程序现在将不会打开另一个Instance再次将参数传递给实例化的应用程序。

因此,我找到了另一个解决方案。



上面页面中的男孩使用Java安装中的jar文件来查看VM实例的运行情况,该实例被调用以查看应用程序启动的参数。它在同一页面中包含用于执行此操作的代码和jar

现在我可以看到调用该应用程序的线路,如下所示:

com.sun.javaws.Main-open C:\\JNLP example\\applet cartoon\\drawingPack\\drawing\u monitor\\ejompo.ply C:\Users\IsraelAltamira\AppData\Local\Temp\javaws23


其中ejempo.ply是我在jnlp描述符中使用的文件扩展名


好吧,我现在在OS X 10.6.4中工作,这似乎是可行的,但目前web start并没有为我提供文件关联,也没有为安装的应用程序提供快捷方式……但也许最后一个解决方案对这两个系统都有效(至少它可以从我的假超链接中工作,就像上面打开文件的那一行).

关于启动窗口

我认为该应用程序只是缺少了你的图像的正确路径。 在本例中,就像您提到的代码库:



就像你在图中说的:

然后,您的图像必须在
http://foo.example.com/msi/splash.gif


你可能想确定图像在那个地方……这就是我认为可能的原因


关于文件关联。

我现在在同一个平台上工作,它似乎在从JNLP API添加服务时工作。该服务用于注册应用程序,就像注册单实例一样。因此,无论何时启动应用程序,它都可以检索用于调用应用程序的参数。在这种情况下,您可以n使用它查看双击的文件名。 在上面的页面中,您可以找到关于该服务的示例和简短的解释。

我发现的问题是,在您第一次运行应用程序时,我无法看到文件名。 我的意思是,这项服务应该在第一次注册应用程序后,您将看到用于启动应用程序的参数。因此,使用这项服务,如果您第一次通过双击关联文件打开应用程序,您将错过这些参数,直到下一次双击它。您的应用程序现在将不会打开另一个Instance再次将参数传递给实例化的应用程序。

因此,我找到了另一个解决方案。



上面页面中的男孩使用Java安装中的jar文件查看