2011年3月12日土曜日

MacOS Xのアップデート後 #appengine javaで開発サーバが動作しない件

2011-03-11にあったMacOS Xのアップデート実施すると、ローカルで開発サーバが起動できなくなる問題が出るようです。現象としては、開発サーバ(eclipseから起動しても、結局はSDK内のdev_appserverが起動されます)を起動した後、数秒で開発サーバが終了してしまう、という現象です。私が試したときはたまーに少しだけ動作してから落ちる、という場合もありました。下記でも報告されていますし、対策も説明されています。

対策を簡潔に説明しておきます

  1. http://openjdk-osx-build.googlecode.com/files/OpenJDK-1.7-x86_64-20110221.dmg からOpenJDK1.7のイメージを入手する
  2. dmgを開いて、DukeアイコンのInstallation.pkgを実行してOpenJDK1.7をインストールする

これでopenjdk-1.7がインストールされます。此処から先は開発サーバの起動毎に手順があります。

SDK内のdev_appserver.shを直接起動している人

dev_appserver.shをエディタで開いてJAR_FILE=...などの次の行あたりにJAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Homeを追加する

eclipseから起動している人

  1. eclipseの設定画面を開く
  2. 左のツリーからJava > Installed JREsを選択する
  3. 右側のペインでAddをクリックする
  4. Add JREダイアログでMacOS X VMを選択してNextをクリックする
  5. JRE definitionの画面に移るので、JRE HomeDirectoryボタンをクリックして/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Homeを選択する
  6. JRE nameopenjdk-1.7-x86_64を入力する

ここまでの手順で、eclipseがOpenJDK1.7を認識出来るようになります。次に、appengineプロジェクトに対して次の設定を行う必要があります。

  1. プロジェクトのプロパティを開き、左のツリーからJava Build Pathを選択する
  2. 右側のペインでLibrariesタブを開き、リストの下の方にあるJRE System Library[JVM 1.6.0 (MacOS X Default)]を選択し、Removeをクリックして削除する。
  3. Add Libraryボタンをクリックする
  4. Add LibraryダイアログでJRE System Libraryを選択してNextをクリックする
  5. どのJREを使うか選択する画面になるのでAlternate JREを選択し、先の手順でEclipseに認識させたopenjdk-1.7-x86_64を選択する
  6. プロジェクトのLibraryにopenjdkが追加される。

これらの手順で開発サーバが起動できるようになります。

追記

上記手順で開発サーバを起動したときにjavax.net.ssl.SSLExceptionが発生するのが気になる場合は、次の手順で解消できます。

  1. cd /Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home/jre/lib/security
  2. cp /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts .

2011-03-15追記

AppleのJDKを入れ直すという、もっと簡単そうな手順も紹介されています。

コメントを投稿