- PR -

velocityを使用したサーブレットが表示できない

1
投稿者投稿内容
take
大ベテラン
会議室デビュー日: 2004/08/13
投稿数: 177
お住まい・勤務地: 沖縄県北部
投稿日時: 2005-02-28 12:02
4.1.31
いつもお世話になります。開発環境: j2sdk1.4.2_06、TOMCAT4.1.31、ECLIPSE2.1.3、MYSQL4.1、struts1.1、easystruts0.6.4です。
velocityを使ってみたいと思い、ここを参考にサンプルを動かそうとしています。上記の開発環境でこのサンプルとまったく同じことをしようとしてるのですが、いざやってみると下記のエラーが出てしまいます。使用したvelocityツールは velocity-tools-1.1.jar、velocity-dep-1.3.1.jar です。クラスパスは通ってるはずです。

------------- ブラウザに表示されたエラー -------------------
exception

javax.servlet.ServletException: org.apache.velocity.runtime.
at org.apache.velocity.tools.view.servlet.VelocityViewServlet.initVelocity(VelocityViewServlet.java:286)
at org.apache.velocity.tools.view.servlet.VelocityViewServlet.init(VelocityViewServlet.java:171)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:888)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:621)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)


root cause

java.lang.ClassNotFoundException: org.apache.velocity.runtime.
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1407)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1252)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.velocity.runtime.log.LogManager.createLogSystem(LogManager.java:161)
at org.apache.velocity.runtime.RuntimeInstance.initializeLogger(RuntimeInstance.java:533)
at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:267)
at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:169)
at org.apache.velocity.app.Velocity.init(Velocity.java:123)
at org.apache.velocity.tools.view.servlet.VelocityViewServlet.initVelocity(VelocityViewServlet.java:281)
at org.apache.velocity.tools.view.servlet.VelocityViewServlet.init(VelocityViewServlet.java:171)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:888)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:621)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)


実際、ECLIPSEのパッケージエクスプローラから該当jarファイルのクラス構成を見てみても、org.apache.velocity.runtime. 以下にさらに7つのクラスがあるみたいです。上のエラーメッセージはorg.apache.velocity.runtime.が見つかりませんって言ってると思うのですが、org.apache.velocity.runtime.はクラスなのでしょうか・・・?
どこが間違ってるのかわかりません。同じプロジェクト内にstrutsを使用したページがあって、それはちゃんと表示されるのです。sample.vmにアクセスするとエラーになるのです。参考にしたサイトからコピペしたコードではありますが、以下のとおりです。

---------------- web.xml ---------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/velocity-toolbox.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
</web-app>


---------------- velocity-toolbox.xml ---------------------

<?xml version="1.0"?>
<toolbox>
<data type="number">
<key>version</key>
<value>1.1</value>
</data>
<tool>
<key>date</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.DateTool</class>
</tool>
</toolbox>

---------------- velocity.properties ---------------------
runtime.log=velocity.log
runtime.log.logsystem.class=org.apache.velocity.runtime.
log.AvalonLogSystem
input.encoding=Windows-31J
output.encoding=Windows-31J

---------------- sample.vm ---------------------
<html>
<body>
#set($message = "Velocityが動作しています。")
$message<br>
Velocityのバージョン: $version<br>
$date
</body>
</html>

---------- コード終わり -------------------

ご存知の方がいらっしゃいましたらご教授いただきたく質問させていただきました。なにとぞよろしくお願いします。


coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2005-02-28 13:06
引用:

---------------- velocity.properties ---------------------
runtime.log=velocity.log
runtime.log.logsystem.class=org.apache.velocity.runtime.
log.AvalonLogSystem
input.encoding=Windows-31J
output.encoding=Windows-31J


これは、たまたま表示が折り返されているのではなくて、本当にこの位置で改行しているのでしょうか?
だとすると、「org.apache.velocity.runtime.」という変なクラスを使おうとするのが当然ではないかと。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2005-02-28 13:07
引用:

---------------- velocity.properties ---------------------
runtime.log=velocity.log
runtime.log.logsystem.class=org.apache.velocity.runtime.
log.AvalonLogSystem


runtime.で改行入ってるせいじゃないでしょうかね?
違ったらごめんなさい。

take
大ベテラン
会議室デビュー日: 2004/08/13
投稿数: 177
お住まい・勤務地: 沖縄県北部
投稿日時: 2005-02-28 13:09
ご返答いただきありがとうございます。ソースをじっくり見ずに質問してしまって申し訳ございませんでした。変な改行が入ってるのに気づきませんでした。当たり前ですよねー。情けない・・・。

該当行を削除することによって正常に動作しました。ありがとうございました。

[ メッセージ編集済み 編集者: take 編集日時 2005-02-28 13:11 ]
1

スキルアップ/キャリアアップ(JOB@IT)