1

次の 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>

ほとんどすべてが機能しています。.wlog ファイルをダブルクリックすると、アプリケーションが開きます。ただし、正しいファイルは開きません。JNLP が main メソッドにパラメーターを渡して、どのファイルがアプリを起動したかを示すことになっていることをどこかで読みましたが、これは起こっていません (OS X 10.6)。mainアプリケーションのメソッドに空の配列を取得します。

おそらく関係ありませんが、スプラッシュ画面が機能しません:(

これを機能させるための指針はありますか?

4

2 に答える 2

3

Mac OS X のバンドルされたアプリケーションでは、 Mac OS X リファレンス ライブラリの例OSXAdaptercom.apple.eawt.ApplicationListenerに示されているように、を実装できます。

handleOpenFile()このサンプルでは、​​メソッドを実装し、サポートされているファイル タイプをそのファイルに登録することで、Finder からのドキュメント処理もサポートしていInfo.plistます。

補遺:com.apple.eawt.ApplicationListener非推奨です。代わりにcom.apple.eawt.Application、提供するを検討してgetApplication().setOpenFileHandler()ください。

于 2010-05-21T03:28:29.077 に答える
3

スプラッシュ ウィンドウについては

、アプリが画像への正しいパスを欠いていると思います。この場合、コードベースについて言及した

<jnlp spec="6.0.10" version="1.63" codebase="http://foo.example.com/msi" href="Foo.jnlp">

ように、画像で言ったように: <icon href="splash.gif" width="425" height="102" kind="splash"/>

次に、あなたの画像がhttp://foo.example.com/msi/splash.gif

その場所にあることを確認したいかもしれません.... それが原因である可能性があると私は考えています。


ファイルの関連付けについて。

私は今同じように働いています. JNLP API から Service を追加している間はうまくいっているようでしたSingleInstanceService. このサービスは、アプリケーションをシングルトン インスタンスのように登録するために使用されます。したがって、アプリケーションが起動されるたびに、アプリケーションを呼び出すために使用されたパラメーターを取得できます。この場合、それを使用して、ダブルクリックされたファイルの名前を確認できます。 http://download.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/examples.html#SingleInstanceService 上記のページでは、そのサービスに関する例と簡単な説明を見つけることができます。

私が見つけた問題は、アプリを初めて実行したときにファイル名が表示されなかったことです。つまり、このサービスは最初にアプリを登録する必要があり、その後、アプリの起動に使用されるパラメーターが表示されます。したがって、このサービスを使用すると、関連付けられたファイルをダブルクリックしてアプリを初めて開いた場合、次のダブルクリックまでパラメーターが失われます。アプリは別のインスタンスを再度開くことはなくなり、インスタンス化されたアプリケーションにパラメーターを渡すだけになります。

だから、私はこれに対する別の解決策を見つけました。

http://www.knowledgesutra.com/discuss/tpclso-implement-single-instance-application-java.om

上記のページの少年は、Java インストール内の jar ファイルを使用して、アプリの起動のパラメーターを確認するために呼び出された VM インスタンスが実行されていることを確認しました。この同じページでそれを行うために使用されるコードと jar があります。

これで、次のようにアプリを呼び出していた行を確認でき

com.sun.javaws.Main -open C:\\JNLP example\\applet-cartoon\\drawingPack\\drawing_monitor\\ejemplo.ply C:\Users\IsraelAltamira\AppData\Local\Temp\javaws23

ます。ejemplo.ply は、jnlp 記述子で使用したファイル拡張子です。

さて、私は現在 OS X 10.6.4 で作業しており、動作しているように見えますが、現時点では、Web スタートはファイルの関連付けを行っておらず、インストールされたアプリへのショートカットを行っていません...しかし、おそらくこれ最後の解決策は両方のシステムで機能します (少なくとも、ファイルを開くための上記の行のように、私の偽のハイパーリンクから機能します)。

于 2011-08-10T16:42:50.130 に答える