1

Mac OS X で、アプリケーションがまだ実行されていない場合、ドキュメントをダブルクリックしてドキュメントを開くことができません

ドキュメント ファインダーをダブルクリックして描画アプリケーションを起動すると、次のようなダイアログが表示されます。

ドキュメント「test.jdwg」を開けませんでした。アプリケーション「jDraft」は、「jDraft ドキュメント」形式のファイルを開くことができません。

ここに画像の説明を入力

このメッセージ ダイアログは、アプリケーションがスプラッシュ スクリーンを表示する前に表示されますが、アプリケーションはバックグラウンドで起動され (スプラッシュ スクリーンが表示されます)、ドキュメントを再度ダブルクリックすると、アプリケーションが正しく開きます。

背景として、このアプリケーションは (この点で) 何年も機能しています。この問題は、 JWrapperを使用してアプリケーションをパッケージ化しようとしたときに発生しました。

以下はInfo.plist私のアプリケーションです。

これは、JWrapper がアプリケーションを実行するために JVM を起動またはフォークする方法に関連している可能性があると思われます。

Mac OS X の JWrapper でファイルの関連付けを機能させることができた人はいますか?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleName</key>
    <string>jDraft</string>
    <key>CFBundleIdentifier</key>
    <string>jwrapper.osx.jDraft</string>
    <key>CFBundleVersion</key>
    <string>43568712</string>
    <key>CFBundleAllowMixedLocalizations</key>
    <string>true</string>
    <key>CFBundleExecutable</key>
    <string>osxwrapper</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>LSUIElement</key>
    <true/>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleIconFile</key>
    <string>AppLogo.icns</string>
    <key>NSHighResolutionCapable</key>
    <true/>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>jDraft Drawing 2</string>
            <key>LSHandlerRank</key>
            <string>Default</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleTypeIconFile</key>
            <string>jDraft-doc-jdwg.icns</string>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>jdwg</string>
            </array>
            <key>CFBundleTypeOSTypes</key>
            <array>
                <string>jdwg</string>
            </array>
        </dict>
    </array>
</dict>
</plist>
4

1 に答える 1

1

これは JWrapper の問題であり、現時点では十分に解決できない問題であることを確認できると思います。

JWrapper が生成したバンドルから、この問題のない元のアプリ バンドルにすべてのものをコピーしました (驚くべきことに、競合するファイル名はありません!)。

私のアプリはまだ美しく機能しました。

次に、「Info.plist」でこの1つの属性を変更しました

<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>

<key>CFBundleExecutable</key>
<string>osxwrapper</string>

問題が再発します。つまり、アプリケーションの起動中に「開くことができません」というダイアログが表示されます。

osxwrapperしたがって、私の結論は、これを実行してダイアログを表示するのは Mac OS / Finder ではなく、ダイアログを表示してドキュメントを Java コードに渡すことができないか、「ドキュメントを開くイベント」を飲み込むJWrapper であるということです。

osxlauncherJWrapperがフォルダーに入れる実行可能ファイルも試しました.app/Contents/MacOS-同じ結果です。

osxwrapper私のアプリケーションがこれらのドキュメントを開くことができることを伝える方法があるかもしれませんが、ドキュメントを見つけることができませんでした. または、これはサポートされていない機能である可能性があります。これは、そうでなければ優れた製品の重大な省略です.

いずれにせよ、JWrapper の人々から決定的な回答を得て、これで時間を無駄にするのをやめられるとよいでしょう。

于 2016-05-05T05:21:54.950 に答える