2013-02-28 17 views
8

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

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

何が起こっているかを確認する方法はありますか?何らかのエラーやログが表示されますか?

リクエストされたInfo.plist。 pkginfoのの

<?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> 

内容::私は、MacマシンからJavaApplicationStubを持ってApplication.app/Contents/MacOSで

APPL???? 

コードはプライベートなので、私は、アプリケーションにいくつかのものを置き換えます。

結果のファイル構造:コマンドへ

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) 
~ $ 
+0

FreeMind(freemind.sourceforge.net)を見れば、JavaのバンドルをResourcesとJavaApplicationStubのリンクに入れたJavaディレクトリがあることがわかりますそれは内容です。 – koan

+0

私はそれもそうしています。 – javydreamercsw

+0

バンドルのInfo.plistにある 'CFBundleExecutable'の値はいくらですか?これは、MacOSフォルダ内のバイナリファイルの名前でなければなりません。 – joerick

答えて

3

Mac OSはUnixなので、それらのバックスラッシュは確かに間違っています。あなたはWindows上でこれをしたと言われて以来、私がチェックする別のものはファイルのアクセス許可です。特に、これらのファイル:

  • のMacOS/JavaApplicationStub(rwxrwxr-X)
  • (-rw-RW-r--の)リソース/ Javaの/ application.jarに
  • リソース/ Javaの/ libに/ LIB1。 jar(-rw-rw-r--)
  • リソース/ Java/lib/lib2。jar(-rw-rw-r--)

最後に、1.6 *のJVMVersionはnot recommendedです。より互換性があるかもしれないので、代わりに1.5+または1.6+を使用してみてください。

上記をすべて考慮すると、問題はJavaApplicationStubにある必要があります。 JarBundlerのページからご連絡ください。

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

2006年初めスタブ

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

+0

Hmmmm。すべてはジャーブンドラーによって行われた。多分私はWindows上で実行したので...私はそれを見てみましょう。 – javydreamercsw

+0

@javydreamercsw私の改訂版の回答をご覧ください。 – whiskeyspider

+0

LinuxベースのOSで実行された場合、スラッシュは正しく行われます。あなたが言及したファイルのアクセス権と同じ結果が得られます。アプリは起動しませんが、jarファイルを直接実行するとエラーが発生します。 – javydreamercsw

1

あなたはopenを使用して、端末を経由してアプリケーションを起動しようとしたことがありますか?

open Application.app 

これは、アプリケーションがあなたのjarファイルを実行できない理由について詳しく説明します。

更新: open利回りを走る時:

LSOpenURLsWithRoleは()

/Users/MacBookPro/NetBeansProjects/SynamicD/dist/SynamicD.app

ファイルのエラー-10810で失敗しました https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/LaunchServicesReference.pdf(69ページ)を参照すると、エラーの説明は次のようになります。

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

+0

私はそれを試してみましょう。ありがとう! – javydreamercsw

+0

これは私が試したときに得られるものです:LSOpenURLsWithRole()は、/Users/MacBookPro/NetBeansProjects/SynamicD/dist/SynamicD.appファイルのエラー-10810で失敗しました。 – javydreamercsw

+0

"kLSUnknownErr -10810のように見えます。未知のエラーが発生しました。 OS X v10.0以降で利用可能です。" https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/LaunchServicesReference.pdfの69ページを参照してください。あまり役に立たない。 Console.appを開いてあなたのアプリ名を調べることはできますか?そこにさらに情報があるはずです。 – Zack

関連する問題