Skip to main content

5 posts tagged with "Eclipse"

View All Tags

· 8 min read

また海藻猫が騒いでいたのを見つけてしまったのが運の尽き…。 [blackbirdpie id="126122863177633793"]

Android開発はやったことがないからわからないけど、Scala + Eclipseは使っているから、簡単に手順を書いておく。

■ teaplanet/sbt-appengine-eclipse - GitHub

https://github.com/teaplanet/sbt-appengine-eclipse以下の手順で作るふたつのbuild.sbtはGitHubに置いといた。

前提

sbtとEclipseを使ってAppEngineの開発を行う。 テストにはspecs2を使うことを想定してるので、specs2がいらない場合は後述のbuild.sbtからspecs2の依存関係消してね。

こんな役割分担で使ってます。 依存関係解決:sbt エディタ:Eclipse コンパイル:Eclipse(, sbt) テスト:Eclipse(, sbt) デバッグ:Eclipse こんな構成で行います。

ライブラリの依存関係の解決はsbtに任せる。ついでにEclipseのプロジェクトファイル(.project)の生成もsbtに任せる。 Eclipseはエディタとして使いつつ、同時にコンパイルも行う。 テストしつつデバッグもEclipseで行ってる。 基本的にどちらを使ってもいいんだけど、個人的にはこうやって使ってる。

依存関係の解決をsbtがやってくれるもんだから、バージョン管理にバイナリが含まれなくて精神衛生上よい。 プロジェクトをコンパイルするにもコンソールだけで済むし(Eclipse不要)。

環境

Mac OS X 10.7.1 Scala 2.9.1 sbt 0.11.0-RC1 Eclipse Indigo

開発環境構築

sbtの入手

■ Index of ivy-snapshots/org.scala-tools.sbt/sbt-launch/0.11.0-RC1http://repo.typesafe.com/typesafe/ivy-snapshots/org.scala-tools.sbt/sbt-launch/0.11.0-RC1/コンパイルしてもいいけど、持ってきた方が楽。今はこれを使ってます。 違うバージョンでも問題ないかもしれないけど、他のバージョンを使ってたらsbteclipseが動かなかった。

sbtのインストール

入手したsbt(sbt-launch.jar)を実行するために ~/bin/sbt ファイルを作成する。
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
chmod u+x ~/bin/sbt
実行権限付けて、実行できるようにする。

プロジェクト作成

プロジェクトは "ws/sample" に作ることにする。
mkdir -p ws/sample cd ws/sample sbt
これでsbtで必要なファイルが作成され、sbtのプロンプトが表示されているはず。 aboutって入力するとsbtやScalaのバージョンが表示されます。

プロジェクト定義

プロジェクト定義ファイルであるbuild.sbtを作る。 このファイルを作るときはエディタで作ってもいいし、別コンソールからviで作ってもいい。このあともちょくちょくsbtでコマンドを実行するので、sbtプロンプトは残しておいた方が便利だと思う。 ws/sample/build.sbt
name := "sample"

version := "1.0.0"

scalaVersion := "2.9.1"

organization := "teaplanet"

// for Specs2
resolvers ++= Seq("snapshots" at "http://scala-tools.org/repo-snapshots",
"releases" at "http://scala-tools.org/repo-releases",
"releases" at "http://repo1.maven.org/maven2/")

libraryDependencies ++= {
val appEngineVersion = "1.5.5"
Seq(
"com.google.appengine" % "appengine-api-1.0-sdk" % appEngineVersion,
"com.google.appengine" % "appengine-api-stubs" % appEngineVersion % "test",
"com.google.appengine" % "appengine-api-labs" % appEngineVersion % "test",
"com.google.appengine" % "appengine-testing" % appEngineVersion % "test",
"com.google.appengine" % "appengine-tools-sdk" % appEngineVersion % "test",
"org.specs2" %% "specs2" % "1.6.1" % "test",
"org.specs2" %% "specs2-scalaz-core" % "6.0.1" % "test",
"junit" % "junit" % "4.9" % "test"
)
}

build.sbtの空行は大切。

このファイルを作成したら、sbtプロンプトへ戻る。

reload
update

reloadコマンドで更新したファイルを読み込み、updateコマンドで設定を反映する。 初回は依存ライブラリをダウンロードするから時間がかかると思うので、しばし待つ。 ここまででAppEngineの開発が出来る状態になってる。

sbteclipseプラグインを導入する

Eclipseのプロジェクトファイル(.project)を作るためにsbteclipseプラグインを導入する。 ws/sample/project/plugins/build.sbt
resolvers += Classpaths.typesafeResolver

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse" % "1.4.0-RC4")

pluginsディレクトリは無いと思うので作成する。 ここでもbuild.sbtの空行は意味があるので注意。

またsbtプロンプトへ戻ってお約束のコマンド。

reload
update

これでsbteclipseの導入が完了。

ecl[TAB]

と打って "eclipse" と補完されるようであれば正常に導入されてる。

.projectを作るために次のコマンドを実行する。

eclipse create-src

EclipseでScalaを使う準備

■ Scala IDE for Eclipsehttp://www.scala-ide.org/EclipseでScalaを使うためにScala IDE for Eclipseをインストールしておくこと。

Eclipseの設定でbuildmanagerとしてsbtを使う設定ができる。

でも、これが役に立っているかはわかっていない…。

■ Using the Google Plugin for Eclipse - Google App Engine - Google Code

http://code.google.com/intl/en/appengine/docs/java/tools/eclipse.html#Installing_the_Google_Plugin_for_Eclipseライブラリの依存関係はsbtで解決してるので、こっちは必要ないかも。入れてあるけど。

Eclipseをエディタとして使う

sbtで.projectを作成したので、それを読み込む。File -> Import...Existing Projects into Workspace"Browse..." からws/sampleディレクトリを選択。結果的にこんな感じにAppEngineのライブラリが読み込まれた状態でプロジェクトが出来る。

ルーティン

依存ライブラリが増えた場合はbuild.sbtを修正し、reload -> updateを行う。 その後、eclipse create-srcを実行し.projectを作成。 Eclipseに反映するために、更新(F5)を行う。

この環境はsbtとEclipseの共存なので、好きな方を使えばいい。 テストの実行をリアルタイムに行いたいなら、sbtで "~test" しておけばいいし、トレース実行したいならいつものようにEclipseを使えばいい。

課題

ひとつだけ問題があって、Eclipseでテストは実行できるんだけど、sbtでコンパイルすると次のエラーが発生してテストに失敗する。
NullPointerException: No API environment is registered for this thread. (DatastoreApiHelper.java:118)
これはAppEngine絡みの問題なので、AppEngineを使わない人は出会わないだろうし、設定次第で解決できそうな気もする。

今回作ったプロジェクトはEclipseのプラグインを導入してない。導入した所で.projectファイル作成時に設定が上書きされ、消えてしまう。 ■ eed3si9n/sbt-appengine - GitHub

https://github.com/eed3si9n/sbt-appenginesbt-appengineプラグインもあるんだけど、うまく動かなかったので放置してる。

実は…

このやり方、pomuさんに教えてもらったんだけどね。 [blackbirdpie id="117144635427663872"]

· 2 min read

年末にGAE/Jの新機能などなどを期待して、またGAE/Jを使ってみようと思った。 VPS+MongoDBや、VPS+Cassandraという組み合わせと迷ったんだけど、VPSの管理をせず、作ることに専念できそうなのでGAE/Jを選択。 テキストの検索はどうしよう?など、解決しなければならないことはあるけど、先の話だし、あとで考えることにする。

Eclipse 3.6も出て、少し経つし、使ってみることにした…が、Mavenプラグインのインストールでエラー発生。 仕方ないので、断念し、今まで通りEclipse 3.5にした。

EclipseでGAE+Maven+Scalaの環境構築、これってどう手順がいいのだろう? 今回は、GAEプロジェクト作成 → フォルダ構成修正 → Mavenプラグイン適応 → Scalaプラグイン適応という順で行った。 途中でフォルダ構成を変更したのは、src/main/javaの形式にするため。 今のところ、Mavenは依存関係を解決するためにしか使ってないので、これで困ってはいない。

· One min read

Linux版のEclipse3.4は、ファイルを開いただけで勝手に編集したことになってしまう場合がある。 これ、すんごくうざい。 ファイルを開いて、見て、閉じようとするだけで「保存しますか?」って・・・。

この現象はLinux & Eclipse3.4 & ATOKという環境で起きるらしい。

GTK_IM_MODULE=scim $APP/eclipse/eclipseこんな感じに、ATOKを使わないようにEclipseを起動すれば解決。

下記のサイトを参考にした。 hiromasa.another😃) » Blog Archive » Linux 版 Eclipse 3.4 以降でファイルを開いた瞬間に更新扱いになる不具合

http://another.maple4ever.net/archives/776/

· 2 min read

Eclipseでmxmlの補完を行いたい。

Face to fake: Eclipse で mxml の コード補完

http://blog.reirou.jp/2008/08/eclipse-flex3.html手順はこのサイトを参考にした(というか書いてある通り)。

まずはmxmlのスキーマを手に入れる。 xsd4mxml - Google Code

http://code.google.com/p/xsd4mxml/downloads/listあとでファイルの場所を指定するので、困らない場所であればどこに保存してもOK。

続いてEclipseでスキーマを利用できるようにする。

まずはmxmlという拡張子はXMLだということを設定する。 EclipseのメニューよりPreferencesを選択して設定画面を開く。 General→Content Typesを辿る。 右ペインでText→XMLを選択し、Addボタンを押してContent Typeとして"*.mxml"を追加。

続いてスキーマを認識させる。 Eclipseの設定画面より、XML→XML Catalogを辿る。 右ペインのAddボタンを押し、先ほどダウンロードしてきたスキーマファイルを指定する。 以上で設定は完了。

使い方の説明は必要ないと思うが、簡単に補足。 mxmlのファイルをXML Editorで開き、下のSourceタブでXMLを表示。 XMLファイルに"xmlns:mx="http://www.adobe.com/2006/mxml"のような記述があれば補完対象となる。