8

アプリケーションはAppleのJRE 1.6で実行する必要があるため、他の回答で示唆されているようにjarbundler 2.2.0を使用しています。

バンドルは正しいようで、適切なアイコンで表示されますが、クリックしても何も起こりません。その内容に入り、メインファイルが指定されたjarファイルをダブルクリックしてみると、正常に動作します。

何が起こっているかを見る方法はありますか?何らかのエラーまたはログを確認できますか?

Requested Info.plist を編集します。コードは非公開なので、いくつかのものをアプリケーションに置き換えました。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plist version="1.0">
  <dict>
    <key>CFBundleName</key>
    <string>Application</string>
    <key>CFBundleShortVersionString</key>
    <string>2.2.0</string>
    <key>CFBundleGetInfoString</key>
    <string>Application version</string>
    <key>CFBundleAllowMixedLocalizations</key>
    <string>false</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleExecutable</key>
    <string>JavaApplicationStub</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>beta</string>
    <key>CFBundleIconFile</key>
    <string>SynamicD.icns</string>
    <key>CFBundleIdentifier</key>
    <string>net.sourceforge.javydreamercsw</string>
    <key>Java</key>
    <dict>
      <key>MainClass</key>
      <string>net.sourceforge.javydreamercsw.Main</string>
      <key>JVMVersion</key>
      <string>1.6.*</string>
      <key>ClassPath</key>
      <array>
        <string>$JAVAROOT/Application.jar</string>
        <string>$JAVAROOT/lib\lib1.jar</string>
        <string>$JAVAROOT/lib\lib2.jar</string>
      </array>
      <key>Properties</key>
      <dict>
        <key>apple.awt.textantialiasing</key>
        <string>true</string>
        <key>apple.awt.brushMetal</key>
        <string>true</string>
        <key>apple.laf.useScreenMenuBar</key>
        <string>true</string>
        <key>apple.awt.showGrowBox</key>
        <string>true</string>
      </dict>
    </dict>
  </dict>
</plist>

PkgInfo の内容:

APPL????

Application.app/Contents/MacOS には、Mac マシンの JavaApplicationStub があります。

結果のファイル構造:

Application.app
|
---Contents
      |
      ---Info.plist
      ---PkgInfo
      ---MacOS
            |
      |      ---JavaApplicationStub
      ---Resources
            |
             ---Java
                  |
                   ----lib
                        |
                         ---lib1.jar
                        |
                         ---lib2.jar
                  |
                   ---Application.jar
            |
             ---Application.icns

コマンドへの要求された出力:

~ $ java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
~ $ sw_vers -productVersion
10.8.2
~ $ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.7.0_17, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
    1.7.0_15, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home
    1.6.0_43-b01-447, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_43-b01-447, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
~ $ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
~ $ echo $JAVA_HOME

~ $ echo $JAVA_ARCH

~ $ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
~ $ ls /Library/Java/JavaVirtualMachines
jdk1.7.0_15.jdk jdk1.7.0_17.jdk
~ $ /System/Library/Frameworks/JavaVM.framework/Commands/java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)
~ $ 
4

2 に答える 2

3

Mac OSはUnixであるため、これらのバックスラッシュは確かに間違っています。する必要があります:

  <array>
    <string>$JAVAROOT/Application.jar</string>
    <string>$JAVAROOT/lib/lib1.jar</string>
    <string>$JAVAROOT/lib/lib2.jar</string>
  </array>

これはWindowsで行ったとおっしゃっていたので、もう1つ確認するのはファイルのアクセス許可です。特にこれらのファイル:

  • MacOS / JavaApplicationStub(rwxrwxr-x)
  • Resources / Java / Application.jar(-rw-rw-r--)
  • Resources / Java / lib / lib1.jar(-rw-rw-r--)
  • Resources / Java / lib / lib2.jar(-rw-rw-r--)

そして最後に、1.6*のJVMVersionは推奨されません。互換性が高い可能性があるため、代わりに1.5+または1.6+を使用してみてください。

上記のすべてを除外すると、問題はJavaApplicationStubにある必要があります。JarBundlerページから注意してください:

JarBundler ANTタスクをWindowsまたはLinuxで使用する場合は、JavaApplicationStubのコピーを開発者が提供する必要があります。これはソースからビルドすることはできませんが、MacOSXシステムから取得する必要があります。

Java起動スタブに関する既知の問題

2006年の初めに、AppleがQuicktime(7.0.4)にアップグレードすると、古いバージョンの「JavaApplicationStub」が起動に失敗しました。これらの古いコピーは、最初にアプリケーションバンドルをディレクトリとして作成し、次にバンドル内のJARファイルを置き換え、「JavaApplicationStub」をより新しいコピーに置き換えずに新しいアプリケーションを作成した開発者からのものです。

于 2013-03-08T19:38:45.560 に答える
1

を使用してターミナル経由でアプリケーションを起動しようとしましたopenか?

open Application.app

これにより、アプリケーションが jar の実行に失敗した理由について、より多くの情報が得られるはずです。

更新:open利回りを実行すると:

ファイル /Users/MacBookPro/NetBeansProjects/SynamicD/dist/SynamicD.app の LSOpenURLsWithRole() がエラー -10810 で失敗しました

https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/LaunchServicesReference.pdf (69 ページ) を参照すると、エラーの説明は次のとおりです。

kLSUnknownErr -10810 不明なエラーが発生しました。OS X v10.0 以降で利用できます。

于 2013-03-04T19:13:53.540 に答える