2012年9月18日火曜日

[Scala] Eclipse の Java プロジェクトで Scala を使えるようにする。

目標: 既存の Java プロジェクトで Scala も使えるようにすること。

基本的には、.project ファイルと .classpath ファイルに手を入れればできるはず。
やってみよう。

前提条件は、Eclipse に Scala IDE が導入されていること。
環境は、Eclipse Juno + Scala IDE nightly build 版( Juno 対応版)。

.project や .classpath ファイルを直接編集するので、Eclipse は終了しておくか編集対象プロジェクトを Close しておく。


.project


まず 普通の Java プロジェクトの .project ファイル。

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
  <name>SampleProject</name>
  <comment></comment>
  <projects>
  </projects>
  <buildSpec>
    <buildCommand>
      <name>org.eclipse.jdt.core.javabuilder</name>
      <arguments>
      </arguments>
    </buildCommand>
  </buildSpec>
  <natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
  </natures>
</projectDescription>

次に、Scala プロジェクトの .project ファイル。

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
  <name>HelloWorld</name>
  <comment></comment>
  <projects>
  </projects>
  <buildSpec>
    <buildCommand>
      <name>org.scala-ide.sdt.core.scalabuilder</name>
      <arguments>
      </arguments>
    </buildCommand>
  </buildSpec>
  <natures>
    <nature>org.scala-ide.sdt.core.scalanature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
  </natures>
</projectDescription>

builderCommand の name が javabuilder と scalabuilder で違っている。
また、nature も scalanature が追加されていることがわかる。

Scala プロジェクトにも javanature があるが、Scala プロジェクトにも javanature は必要で、これを削除すると動かなくなってしまう。

やること。
  • builderCommand を org.scala-ide.sdt.core.scalabuilder に変更する。
  • natures に org.scala-ide.sdt.core.scalanature を追加する。


.classpath


Java プロジェクトの .project ファイル。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="output" path="bin"/>
</classpath>

Scala プロジェクトの .project ファイル。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="output" path="bin"/>
</classpath>

クラスパスエントリに SCALA_CONTAINER が追加されている。
これは、Eclipse で Scala プロジェクトの プロジェクトプロパティを開いたときに Java Build Path の Libraries タブに追加されている Scala Library に相当する部分だと思う。

やること。
  • classpathentry に kind="con" の
    org.eclipse.jdt.launching.JRE_CONTAINER を追加する。


結果


元 Java プロジェクト に Scala オブジェクトや Scala クラスを追加し実行できるようになった。
OK。

まとめ:
  • .project の builderCommand を org.scala-ide.sdt.core.scalabuilder に変更
  • .project の natures に org.scala-ide.sdt.core.scalanature を追加
  • .classpath の classpathentry に kind="con" の
    org.eclipse.jdt.launching.JRE_CONTAINER を追加


0 件のコメント:

コメントを投稿