OSDN Git Service

OSX用Java7(Oracle)を実行するアプリケーションバンドルに対応した。
authorseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sat, 23 Mar 2013 18:36:45 +0000 (18:36 +0000)
committerseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sat, 23 Mar 2013 18:36:45 +0000 (18:36 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/charactermanaj/trunk@47 5b6e9025-a2e8-4882-b233-f889982098c5

22 files changed:
CharacterManaJ.app/Contents/Info.plist
CharacterManaJ.app/Contents/MacOS/JavaApplicationStub [changed mode: 0644->0755]
CharacterManaJ.app/Contents/Resources/Java/CharacterManaJ.jar
CharacterManaJ.app/Contents/Resources/icon.icns [changed mode: 0644->0755]
CharacterManaJ.app/Contents/Resources/ja.lproj/InfoPlist.strings [changed mode: 0644->0755]
CharacterManaJ.app/Contents/Resources/splash.png [changed mode: 0644->0755]
CharacterManaJ.jar [changed mode: 0644->0755]
build.xml
charactermanaj.exe
extlib/appbundler-1.0.jar [new file with mode: 0644]
extlib/build_for_java7mac.xml [new file with mode: 0644]
java7mac/CharacterManaJ.app/Contents/Info.plist [new file with mode: 0644]
java7mac/CharacterManaJ.app/Contents/Java/CharacterManaJ.jar [new file with mode: 0755]
java7mac/CharacterManaJ.app/Contents/MacOS/JavaAppLauncher [new file with mode: 0755]
java7mac/CharacterManaJ.app/Contents/PkgInfo [new file with mode: 0644]
java7mac/CharacterManaJ.app/Contents/Resources/en.lproj/Localizable.strings [new file with mode: 0755]
java7mac/CharacterManaJ.app/Contents/Resources/icon.icns [new file with mode: 0755]
java7mac/CharacterManaJ.app/Contents/Resources/ja.lproj/InfoPlist.strings [new file with mode: 0755]
java7mac/CharacterManaJ.app/Contents/Resources/splash.png [new file with mode: 0755]
resources/appinfo/about.html
resources/appinfo/about_ja.html
src/charactermanaj/CharacterManaJ.java [new file with mode: 0644]

index 06c5f6f..e681160 100644 (file)
@@ -4,6 +4,8 @@
 <dict>
        <key>CFBundleName</key>
        <string>CharacterManaJ</string>
+       <key>CFBundleDisplayName</key>
+       <string>CharacterManaJ</string>
        <key>CFBundleIdentifier</key>
        <string>charactermanaj.Main</string>
        <key>CFBundleVersion</key>
index cc0fd72..afa5605 100755 (executable)
Binary files a/CharacterManaJ.app/Contents/Resources/Java/CharacterManaJ.jar and b/CharacterManaJ.app/Contents/Resources/Java/CharacterManaJ.jar differ
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index cc0fd72..afa5605
Binary files a/CharacterManaJ.jar and b/CharacterManaJ.jar differ
index 68716e0..b4343d7 100644 (file)
--- a/build.xml
+++ b/build.xml
                <!-- J2SE5以降をターゲットにコンパイルする。(Tiger/Leopard on PPCのため)
                     JDK6のAppleExtentionsでは非推奨になっているものがあるため警告がでます。
                 -->
-       <javac target="1.5" destdir="work" srcdir="src" encoding="UTF-8" debug="on" includeantruntime="false">
+       <javac
+               target="1.5"
+               destdir="work"
+               srcdir="src"
+               encoding="UTF-8"
+               debug="on"
+               includeantruntime="false">
                <classpath>
                        <fileset dir="extlib">
                                <include name="**/*.jar"/>
                        </fileset>
                </classpath>
        </javac>
-       
+
                <!-- リソースをコピーする -->
                <copy todir="work">
                <fileset dir="resources">
@@ -65,7 +71,7 @@
                <!-- JARを作成する -->
                <jar jarfile="CharacterManaJ.jar" basedir="work">
                <manifest>
-                       <attribute name="Main-Class" value="charactermanaj.Main" />
+                       <attribute name="Main-Class" value="charactermanaj.CharacterManaJ" />
                        <!-- スプラッシュ画像 -->
                        <attribute name="Splashscreen-Image" value="splash.png"/>
                        <!-- バージョン情報とか -->
         -->
        <target name="makeAppBundle" if="isMacOSX" depends="default">
                <!-- JARファイルをアプリケーションバンドル内にコピー -->
-       <copy file="${jarName}" toDir="CharacterManaJ.app/Contents/Resources/Java/"/>
+       <exec dir="." executable="/bin/ln">
+               <arg line='-f "${jarName}" "${appName}/Contents/Resources/Java/${jarName}"'/>
+               </exec>
                <!-- JAVA起動スタブをコピー -->
                <copy file="/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/JavaApplicationStub"
-                         toDir="CharacterManaJ.app/Contents/MacOS/"/>
+                         toDir="${appName}/Contents/MacOS/"/>
                <!-- ルートフォルダにアプリケーションバンドルの属性をセット -->
                <exec dir="." executable="/bin/sh">
                        <arg line='-c "/usr/bin/setFile -a B ${appName}"'/>
                </exec>
                <!-- JAVA起動スタブに実行パーミッション再設定 -->
                <exec dir="." executable="/bin/sh">
-                       <arg line='-c "chmod 755 CharacterManaJ.app/Contents/MacOS/JavaApplicationStub"'/>
+                       <arg line='-c "chmod 755 ${appName}/Contents/MacOS/JavaApplicationStub"'/>
                </exec>
                <!-- リソースディレクトリのパーミッション再設定 -->
                <exec dir="." executable="/bin/sh">
-                       <arg line='-c "chmod -R 774 CharacterManaJ.app/Contents/Resources/"'/>
+                       <arg line='-c "chmod -R 774 ${appName}/Contents/Resources/"'/>
+               </exec>
+       </target>
+
+       <!--
+        OracleのJava7 on OSX用のアプリケーションバンドル構造のフォルダを更新する。
+        基本構造は、appbundler.jarを用いて作成したもの。ただし、環境変数LC_CTYPE=UTF8の設定と、
+        スプラッシュ画面、および、ローカライズの設定をinfo.plist, InfoPlist.stringsに加えている.
+        -->
+       <target name="makeAppBundleJava7" if="isMacOSX" depends="default">
+               <!-- JARファイルをアプリケーションバンドル内にコピー -->
+       <exec dir="." executable="/bin/ln">
+               <arg line='-f "${jarName}" "java7mac/${appName}/Contents/Java/${jarName}"'/>
+               </exec>
+               <!-- ルートフォルダにアプリケーションバンドルの属性をセット -->
+               <exec dir="java7mac" executable="/bin/sh">
+                       <arg line='-c "/usr/bin/setFile -a B ${appName}"'/>
+               </exec>
+               <!-- JAVA起動スタブに実行パーミッション再設定 -->
+               <exec dir="java7mac" executable="/bin/sh">
+                       <arg line='-c "chmod 755 ${appName}/Contents/MacOS/JavaAppLauncher"'/>
+               </exec>
+               <!-- リソースディレクトリのパーミッション再設定 -->
+               <exec dir="java7mac" executable="/bin/sh">
+                       <arg line='-c "chmod -R 774 ${appName}/Contents/Resources/"'/>
                </exec>
        </target>
 
index 0fa1627..2fedcf4 100644 (file)
Binary files a/charactermanaj.exe and b/charactermanaj.exe differ
diff --git a/extlib/appbundler-1.0.jar b/extlib/appbundler-1.0.jar
new file mode 100644 (file)
index 0000000..ef30f1c
Binary files /dev/null and b/extlib/appbundler-1.0.jar differ
diff --git a/extlib/build_for_java7mac.xml b/extlib/build_for_java7mac.xml
new file mode 100644 (file)
index 0000000..53bc7d9
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="CharacterManaJ_Java7Mac" default="app-bundle">
+    <description>CharacterManaJ(For Java7 On OSX)</description>
+
+       <taskdef name="bundleapp"
+                    classname="com.oracle.appbundler.AppBundlerTask"   
+                    classpath="appbundler-1.0.jar" />
+
+       <!--
+        Java7 for OSX用のアプリケーションバンドルを作成するためのタスクを実行する.
+        http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html
+        ただし、これを実施したあとにinfo.plistの修正やリソースの追加が必要である。
+       -->
+    <target name="app-bundle">
+        <bundleapp outputdirectory="../java7mac"
+            name="CharacterManaJ"
+            displayname="キャラクターなんとかJ"
+               shortversion="1.0"
+               icon="icon.icns"
+            identifier="charactermanaj.Main"
+            mainclassname="charactermanaj.Main">
+            <classpath file="../CharacterManaJ.jar" />
+        </bundleapp>
+    </target>
+
+</project>
diff --git a/java7mac/CharacterManaJ.app/Contents/Info.plist b/java7mac/CharacterManaJ.app/Contents/Info.plist
new file mode 100644 (file)
index 0000000..9098c67
--- /dev/null
@@ -0,0 +1,47 @@
+<?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>LSEnvironment</key>
+       <dict>
+               <key>LC_CTYPE</key>
+               <string>UTF-8</string>
+       </dict>
+       <key>LSApplicationCategoryType</key>
+       <string>public.app-category.graphics-design</string>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>ja_JP</string>
+       <key>CFBundleExecutable</key>
+       <string>JavaAppLauncher</string>
+       <key>CFBundleIconFile</key>
+       <string>icon.icns</string>
+       <key>CFBundleIdentifier</key>
+       <string>charactermanaj.CharacterManaJ</string>
+       <key>CFBundleDisplayName</key>
+       <string>CharacterManaJ</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+       <key>CFBundleName</key>
+       <string>CharacterManaJ</string>
+       <key>CFBundlePackageType</key>
+       <string>APPL</string>
+       <key>CFBundleShortVersionString</key>
+       <string>1.0</string>
+       <key>CFBundleSignature</key>
+       <string>????</string>
+       <key>CFBundleVersion</key>
+       <string>1</string>
+       <key>NSHumanReadableCopyright</key>
+       <string>seraphyware</string>
+       <key>JVMMainClassName</key>
+       <string>charactermanaj.CharacterManaJ</string>
+       <key>JVMOptions</key>
+       <array>
+               <string>-splash:$APP_ROOT/Contents/Resources/splash.png</string>
+               <string>-Xms96m</string>
+               <string>-Xmx128m</string>
+       </array>
+       <key>JVMArguments</key>
+       <array/>
+</dict>
+</plist>
diff --git a/java7mac/CharacterManaJ.app/Contents/Java/CharacterManaJ.jar b/java7mac/CharacterManaJ.app/Contents/Java/CharacterManaJ.jar
new file mode 100755 (executable)
index 0000000..afa5605
Binary files /dev/null and b/java7mac/CharacterManaJ.app/Contents/Java/CharacterManaJ.jar differ
diff --git a/java7mac/CharacterManaJ.app/Contents/MacOS/JavaAppLauncher b/java7mac/CharacterManaJ.app/Contents/MacOS/JavaAppLauncher
new file mode 100755 (executable)
index 0000000..7bddebe
Binary files /dev/null and b/java7mac/CharacterManaJ.app/Contents/MacOS/JavaAppLauncher differ
diff --git a/java7mac/CharacterManaJ.app/Contents/PkgInfo b/java7mac/CharacterManaJ.app/Contents/PkgInfo
new file mode 100644 (file)
index 0000000..bd04210
--- /dev/null
@@ -0,0 +1 @@
+APPL????
\ No newline at end of file
diff --git a/java7mac/CharacterManaJ.app/Contents/Resources/en.lproj/Localizable.strings b/java7mac/CharacterManaJ.app/Contents/Resources/en.lproj/Localizable.strings
new file mode 100755 (executable)
index 0000000..0d306aa
--- /dev/null
@@ -0,0 +1,3 @@
+"JRELoadError" = "Unable to load Java Runtime Environment.";
+"MainClassNameRequired" = "Main class name is required.";
+"JavaDirectoryNotFound" = "Unable to enumerate Java directory contents.";
diff --git a/java7mac/CharacterManaJ.app/Contents/Resources/icon.icns b/java7mac/CharacterManaJ.app/Contents/Resources/icon.icns
new file mode 100755 (executable)
index 0000000..954054d
Binary files /dev/null and b/java7mac/CharacterManaJ.app/Contents/Resources/icon.icns differ
diff --git a/java7mac/CharacterManaJ.app/Contents/Resources/ja.lproj/InfoPlist.strings b/java7mac/CharacterManaJ.app/Contents/Resources/ja.lproj/InfoPlist.strings
new file mode 100755 (executable)
index 0000000..53d07a8
--- /dev/null
@@ -0,0 +1,2 @@
+CFBundleName = "キャラクターなんとかJ";
+CFBundleDisplayName = "キャラクターなんとかJ";
diff --git a/java7mac/CharacterManaJ.app/Contents/Resources/splash.png b/java7mac/CharacterManaJ.app/Contents/Resources/splash.png
new file mode 100755 (executable)
index 0000000..05dbb9b
Binary files /dev/null and b/java7mac/CharacterManaJ.app/Contents/Resources/splash.png differ
index 522da52..c6b1daf 100644 (file)
@@ -26,6 +26,9 @@ h2 {
                        <li>10.5 Leopard (Intel) JavaSE6</li>\r
                        <li>10.6 Snow Leopard (Intel) JavaSE6</li>\r
                        <li>10.7 Lion (Intel) JavaSE6 (Java for Mac OS X 10.7 is required.)</li>\r
+                       <li>10.7 Lion (Intel) Java7 (Oracle, Java7u17 or later)</li>\r
+                       <li>10.8 Mountain Lion (Intel) JavaSE6 (Java for Mac OS X 10.7 is required.)</li>\r
+                       <li>10.8 Mountain Lion (Intel) Java7 (Oracle, java7u17 or later)</li>\r
                </ul>\r
        </li>\r
        <li>Microsoft Windows\r
@@ -33,7 +36,8 @@ h2 {
                        <li>Windows 2000 SP4 (32Bit) JavaSE6 (<font color="red">Japanese Only</font>)</li>\r
                        <li>Windows XP SP2 or later (32Bit) JavaSE6</li>\r
                        <li>Windows Vista SP1 or later (32/64Bit) JavaSE6</li>\r
-                       <li>Windows 7 (32/64Bit) JavaSE6</li>\r
+                       <li>Windows 7 (32/64Bit) JavaSE6, Java7u10 or later</li>\r
+                       <li>Windows 8 (32/64Bit) JavaSE6, Java7u10 or later</li>\r
                </ul>\r
                <span style="color: red; font-weight: bold;">Installation of language support of East Asia is indispensable.</span><br>\r
                (Control Panel / Regional and Language Options / Language Tab / Install files for East Asian languages)\r
@@ -41,24 +45,21 @@ h2 {
        <li>Linux\r
                <ul>\r
                        <li>Ubuntu 10.04 sun-java-jdk6</li>\r
+                       <li>Ubuntu 12.04 openjdk7</li>\r
                        <li>Fedora 14 Desktop openjdk-1.6.0 or sun-java-jdk6(recommended)</li>\r
                </ul>\r
        </li>\r
 </ul>\r
 <p>I think that it will operate fundamentally if there is an execution environment which supported the desktop of J2SE5 since J2SE5 has described.</p>\r
-<p>JavaSE6 is recommended.</p>\r
+<p>JavaSE7 is recommended.</p>\r
 <p>"<font color="red">lib/charsets.jar</font>" is indispensable in order to treat a Japanese file name.</p>\r
 <p>When "lib/charsets.jar" does not exist, it is necessary to re-install JRE. <br>\r
 (For example, when "East Asian Languages" is installed afterwards.) </p>\r
 <hr>\r
 <p><font color="gray">Could someone please translate this japanese text.</font></p>\r
 \r
-<h3>JavaSE7の注意点</h3>\r
-<p>JavaSE7でも基本的には動作しますが、細かな点で互換性がなく、現時点では推奨されません。</p>\r
-<p>また、Windows環境において、日本語を含むパス上にexeまたはjarファイルをおいてある場合はダブルクリックによる起動ができません。たとえば「デスクトップ」とか「マイドキュメント」の上に置くことはできません。</p>\r
-<p>日本語を含むパスから起動したい場合は、コマンドプロンプトからカレントディレクトリに設定したのちに起動するようにすれば使用できますが、\r
-単純に日本語を含まないフォルダに移動するほうが手っ取り早いと思います。(これは本アプリケーションにかぎらず、どのアプリでも起きるため、JavaSE7の不具合と思われますが、2012/3時点で修正されておりません。)</p>\r
-<p>そのほか、色が劣化するなどの違いがあるようですが、基本的にはJDK7の完成度が低いことに起因するものと考えられます。</p>\r
+<h3>Java7の注意点</h3>\r
+<p>Mac上での本アプリケーションは、AppleのJava6用と、OracleのJava7用と、それぞれ専用版のアプリケーションに分けています。</p>\r
 \r
 <h2>[About this software]</h2>\r
 <p>このアプリケーションは複数の画像を選択し重ね合わせることで一つの画像を作り出す、モンタージュを行うアプリケーションです。</p>\r
@@ -97,4 +98,7 @@ h2 {
 \r
 <h2>[利用コンポーネントについて]</h2>\r
 <p>J2SE5の標準APIの他、Apache Antの一部(The Apache License Version 2.0)をライブラリとして使用しています。</p>\r
+<p>また、カラーモデルのHSY(色相・彩度・輝度)計算には、\r
+<a href="http://d.hatena.ne.jp/gununu/20090721/1248171222">"gununuの日記"</a>さん\r
+のところのC++計算ルーチンをJava用に書き直したものを使用しています。</p>\r
 </html>\r
index 8fa7f76..73a9b44 100644 (file)
@@ -59,7 +59,10 @@ h2 {
                        <li>10.5 Leopard (Intel/PPC) J2SE5</li>\r
                        <li>10.5 Leopard (Intel) JavaSE6</li>\r
                        <li>10.6 Snow Leopard (Intel) JavaSE6</li>\r
-                       <li>10.7 Lion (Intel) JavaSE6 (Java for Mac OS X 10.7が必要)</li>\r
+                       <li>10.7 Lion (Intel) JavaSE6 (Java for Mac OS X 10.7 is required.)</li>\r
+                       <li>10.7 Lion (Intel) Java7 (Oracle, Java7u17 or later)</li>\r
+                       <li>10.8 Mountain Lion (Intel) JavaSE6 (Java for Mac OS X 10.7 is required.)</li>\r
+                       <li>10.8 Mountain Lion (Intel) Java7 (Oracle, java7u17 or later)</li>\r
                </ul>\r
        </li>\r
        <li>Microsoft Windows\r
@@ -67,31 +70,32 @@ h2 {
                        <li>Windows 2000 SP4 (32Bit) JavaSE6 (日本語版のみ)</li>\r
                        <li>Windows XP SP2+ (32Bit) JavaSE6 (日本語版、それ以外はEast asian languagesをコンパネからインストール済みのこと)</li>\r
                        <li>Windows Vista SP1以降 (32/64Bit) JavaSE6</li>\r
-                       <li>Windows 7 (32/64Bit) JavaSE6</li>\r
+                       <li>Windows 7 (32/64Bit) JavaSE6, Java7u10 or later</li>\r
+                       <li>Windows 8 (32/64Bit) JavaSE6, Java7u10 or later</li>\r
                </ul>\r
        </li>\r
        <li>Linux\r
                <ul>\r
                        <li>Ubuntu 10.04 sun-java-jdk6</li>\r
+                       <li>Ubuntu 12.04 openjdk7</li>\r
                        <li>Fedora 14 Desktop openjdk-1.6.0/sun-java-jdk6 (sun-javaを推奨)</li>\r
                </ul>\r
        </li>\r
 </ul>\r
 <p>J2SE5で記述しているため、J2SE5のデスクトップをサポートした実行環境があれば基本的には動作すると思います。</p>\r
-<p>Windows環境ではJ2SE5でも動作しますが、JavaSE6を推奨します。同様にMac OS XでもTigerやLeopard on PPCでないかぎりJavaSE6を推奨します。</p>\r
+<p>Windows環境ではJ2SE5でも動作しますが、Java7を推奨します。</p>\r
+<p>Mac OS Xも同様にJava7(Oracle)を推奨します。(AppleのJavaSE5/JavaSE6でも動作します。)</p>\r
+<p>Mac OS X上での本アプリケーションは、AppleのJava5/6用と、OracleのJava7用と、それぞれ専用版のアプリケーションに分けています。</p>\r
 <p>メモリは、Mac OS Xのアプリケーションバンドル形式、またはWindowsのEXE形式での配布形式では、初期状態で96MB、最大で128MBの設定を行っています。</p>\r
 <p>実行可能JAR形式ではJREのデフォルトのサイズが使われます。これは搭載している物理メモリによって割り当てられるサイズが64MBあるいは256MBのように変わります。</p>\r
 <p>おそらく通常の利用方法において64MBの割り当てでは、やや不足する感があると思いますが、一応、動作はすると思います。</p>\r
 <p>実際のメモリ使用状況については Aboutメニューからシステム情報タブの中で確認することができます。</p>\r
-<p>Linuxをお使いの場合は、sun-javaを推奨します。(基本的にはopenjdkでも動作しますが、クリップボードが機能しません。)</p>\r
-\r
-<h3>JavaSE7の注意点</h3>\r
-<p>JavaSE7でも基本的には動作しますが、細かな点で互換性がなく、現時点では推奨されません。</p>\r
-<p>また、Windows環境において、日本語を含むパス上にexeまたはjarファイルをおいてある場合はダブルクリックによる起動ができません。たとえば「デスクトップ」とか「マイドキュメント」の上に置くことはできません。</p>\r
-<p>日本語を含むパスから起動したい場合は、コマンドプロンプトからカレントディレクトリに設定したのちに起動するようにすれば使用できますが、\r
-単純に日本語を含まないフォルダに移動するほうが手っ取り早いと思います。(これは本アプリケーションにかぎらず、どのアプリでも起きるため、JavaSE7の不具合と思われますが、2012/3時点で修正されておりません。)</p>\r
-<p>そのほか、色が劣化するなどの違いがあるようですが、基本的にはJDK7の完成度が低いことに起因するものと考えられます。</p>\r
+<p>Linuxをお使いの場合は、openjdk7を推奨します。</p>\r
+<p>(Linux上でJavaSE6を使われる場合は、sun-java6を推奨します。基本的にはopenjdk6でも動作しますが、クリップボードが機能しません。)</p>\r
 \r
 <h2>[利用コンポーネントについて]</h2>\r
 <p>J2SE5の標準APIの他、Apache Antの一部(The Apache License Version 2.0)をライブラリとして使用しています。</p>\r
+<p>また、カラーモデルのHSY(色相・彩度・輝度)計算には、\r
+<a href="http://d.hatena.ne.jp/gununu/20090721/1248171222">"gununuの日記"</a>さん\r
+のところのC++計算ルーチンをJava用に書き直したものを使用しています。</p>\r
 </html>\r
diff --git a/src/charactermanaj/CharacterManaJ.java b/src/charactermanaj/CharacterManaJ.java
new file mode 100644 (file)
index 0000000..af4e9c4
--- /dev/null
@@ -0,0 +1,14 @@
+package charactermanaj;\r
+\r
+/**\r
+ * Java7 on OSX で、クラス名がメニューの「〜の終了」「〜について」の起動クラス名がアプリ名に使われており、\r
+ * info.pinfoのBundleNameでも変更できないため、回避方法がみつかるまで、本クラス名を表示させることにする。\r
+ * \r
+ * @author seraphy\r
+ */\r
+public class CharacterManaJ {\r
+\r
+       public static void main(String[] args) throws Exception {\r
+               Main.main(args);\r
+       }\r
+}\r