将皇の問題配信で使っているGoogleのサーバ(AppEngine)でJava7が使えなくなるからJava8に移行してくれとアナウンスが来ました。Java7でデプロイしたプログラムは来年の1月で強制的にシャットダウンするという事です。( ´_ゝ`)フーンと思って移行方法を調べてみたところ芋づる式に作業が増える事が分かりテンションがガタ落ちです。とりあえずまとめてみます。
■Java7からJava8への移行方法について
Migrating from Java 7 to Java 8 Runtime
をみるとappengine-web.xmlに<runtime>の設定を追加してデプロイすれば良い、とあるので早速試してみたところエラーがでました。「今使っている環境が最新でない(むしろかなり古い)ので最新にしてから考えよう!」と思い調べると、現在使っている「Google Plugin for Eclipse」が非サポートになっていた事を今更知りました。「Cloud Tools for Eclipse」に移行せよとのことです。
■Cloud Tools for Eclipseの移行方法について
Google Plugin for Eclipse からの移行
新しいソフトウェアをいくつかインストールする必要があります。普段なら面倒臭い作業ですが、開発環境を新しいPCに移行する必要が元々あったため、ちょうど良いきっかけになりました。手順に従って移行するといくつかエラーが発生します。エラーの内容をググって解決。解決した後にナレッジをまとめたQiitaを発見しました…。
Google Plugin for Eclipse から Cloud Tools for Eclipse への移行
色々あったけどjava8でデプロイできました。と思ったら実行時エラーが発生。Java8でサポートしていないクラスがあるとのこと。使っていないので削除!削除!
今度は別のエラーが発生。これが一番の問題です。移行ガイドを再度読んでみたところ「Cloud Tools for Eclipse はエンティティ クラスを自動拡張しません」という一番がさらっと書いてあって、このせいでエラーが起きていました。端的にまとめるとDBアクセス系の関数が全部非サポートということです。移行の方法がさらっと書いてありましたが、Stackonverflowの事例を見た限りでは別のライブラリを使った方が早いみたいです。
DataNucleus JDO with Google Cloud Tools for Eclipse
それなりのプログラム修正が必要です。残念無念。しっかりしたテストも必要だし、この作業に集中しても半月以上かかる気がします。3か月くらいかけて少しずつ進めていこうと今は考えていますが、それにしても大幅なモチベダウンです。
コメント