まずは、q4eをEclipseで使用し、通常のWebアプリケーションをローカルインストールしようとした。
プロジェクト右クリック→[Maven2]→アーティファクトのローカル・インストール
Unable to locate the Javac Compiler in:
C:\Program Files\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.
これはつまり、JREではなくJDKに含まれている「tools.jar」が必要だということらしい。
ビルドやテスト、依存ライブラリ追加は自動化できる!
の『注意! 「Javaコンパイラのエラー」』のところに記載があります。
これを解決する方法は、主に以下の2つがあります。
Eclipseの起動コマンドの「-vm」オプションでJDKに入っているjavaw.exeを指定する
プロジェクト定義ファイル(pom.xml)もしくはMaven設定ファイル(settings.xml)で、Maven実行の際に使われるコンパイラを指定する
ということなので、出来ればpom.xmlだけで解決したかったが、
Compiling Sources Using A Different JDKを見ると、settings.xmlまでいじらなくてはならなそうなので、1の方法にした。
-vm “C:\Program Files\Java\jdk1.6.0_10\bin\javaw.exe”
と付けるだけ。
次に実行してみたら
Failure executing javac, but could not parse the error:
javac: ターゲットリリース 1.1 がデフォルトのソースリリース 1.5 と競合しています。
と出た。たぶんこれは、pom.xmlに以下の記載を中途半端にしたまま実行してしまったから。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable><!-- path-to-javac --></executable>
<compilerVersion>1.3</compilerVersion>
</configuration>
</plugin>
</plugins>
これを消してさらに実行。すると
注釈は -source 1.3 でサポートされていません
(注釈を使用可能にするには、-source 5 以降を使用してください)
@Execute(validator = false)
これは、SAStrutsのアノテーションのところなのだが、Mavenの初期設定は1.3だそうなので、Mavenのプラグイン設定で変更する。
(さっきのページに載っていたけど)
ソースのバージョン
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
にしてさらに実行する。
パッケージ javax.servlet は存在しません。
パッケージ javax.servlet.http は存在しません。
え、そんな当たり前なやつまで??。と思ったけどMavenはTOMCATは意識しているはずもないので、dependencyを追加。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
これで実行すると、問題なくローカルインストール出来た。
だがしかし、TOMCATPluginを使ってこのアプリケーションを起動しようとすると、
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ requestDumpFilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.extension.filter.RequestDumpFilter
:
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ s2filter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.framework.container.filter.S2ContainerFilter
:
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ hotdeployfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.framework.container.hotdeploy.HotdeployFilter
:
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ encodingfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.extension.filter.EncodingFilter
:
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ routingfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.struts.filter.RoutingFilter
とか、ドカドカ起動エラーが出ている。このアプリケーションはSAStrutsを使っているので、
そのライブラリがTOMCATから見えないようだ。
どうも、q4eで追加されていた筈のDependencyのライブラリ群がプロジェクトにないのに気がついた。
なぜなくなったんだろう?
ということで、試しにMaven2プロジェクトを作成してみて、そのプロジェクトの.classpathファイルを
見てみたら以下のエントリーがある。
<classpathentry kind="con" path="org.devzuz.q.maven.jdt.core.mavenClasspathContainer"/>
これがいつのまにか無くなっていた。
このエントリを起動しようとしていたプロジェクトの.classpathに追記したら、やっと画面が拝めるようになった。