- PR -

LinkedHashMapにArrayListを格納できない?

投稿者投稿内容
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-03-22 21:11
とりあえず、 Exception を catch している個所で、e.printStackTrace() として、スタックトレースを出力して下さい。
で、その内容を教えていただくのが手っ取り早いです。

後、プログラムのコードなど、等幅のフォントで表示したい部分があるときには次のように [CODE] [/CODE] で囲んでください。
[CODE]#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hello World!"; [/CODE]

このようにすると、タグで囲んだ部分の文字を等幅のフォントで、インデント付きの状態で表示します。
一度投稿した内容も編集できるので、試してみてください。
やまと
常連さん
会議室デビュー日: 2004/02/20
投稿数: 25
投稿日時: 2004-03-23 09:18
>とりあえず、 Exception を catch している個所で、e.printStackTrace() として、スタックトレースを出力して下さい。
>で、その内容を教えていただくのが手っ取り早いです。

e.printStackTrace()はエラーになってしまうので、e.getStackTrace()としてみました。

以下エラーないようです。
ながながとすみませんが、全部載せます。
でゅうくさん、分かりますでしょうか?


コード:
#!/usr/bin/perl 

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
	at sankaActual.SankaActualSelectServlet.doGet(SankaActualSelectServlet.java:146)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
	at java.lang.Thread.run(Thread.java:534)


root cause 

java.lang.ClassCastException
	at org.apache.jsp.SankaActual_err_jsp._jspService(SankaActual_err_jsp.java:44)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
	at sankaActual.SankaActualSelectServlet.doGet(SankaActualSelectServlet.java:146)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
	at java.lang.Thread.run(Thread.java:534)





やまと
常連さん
会議室デビュー日: 2004/02/20
投稿数: 25
投稿日時: 2004-03-23 09:21
すみません。自己レスです。

#!/usr/bin/perl
がありますが気にしないでください。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-03-23 10:53
引用:

やまとさんの書き込み (2004-03-23 09:18) より:

root cause

java.lang.ClassCastException
at org.apache.jsp.SankaActual_err_jsp._jspService(SankaActual_err_jsp.java:44)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)

[/code]




JSPソース内部での、実行時のクラスキャスト例外ですよ。LinkedHashMap#put()の失敗ではなさそうです。JSPを見ないとなんともいえませんが、多分get()してキャストするところで間違っているのでは…

[追記]
TreeMapでしたか…気が付いていませんでした。put()するごとにkeyに対してComparable#CompareTo()が呼ばれますので、Stringとそれ以外のクラスオブジェクトをkeyとして利用しようとすれば、ClassCastExceptionが出るのは当然ですね…

[ メッセージ編集済み 編集者: シュン 編集日時 2004-03-23 12:22 ]
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-03-23 11:03
引用:

やまとさんの書き込み (2004-03-23 09:18) より:
でゅうくさん、分かりますでしょうか?


名指しは勘弁してください。
私はやまとさんのサポートセンターではありませんからね。

SankaActualSelectServlet の 146 行目 で ClassCastException が発生しているとスタックトレースに出ています。ご自分でも確認してみてください。

後、参考までに。
以下のコードは 一番最後の行で、ClassCastException が発生します。
コード:

Map map;

List keys1 = new ArrayList();
List values1 = new ArrayList();

List keys2 = new ArrayList();
List values2 = new ArrayList();

map = new LinkedHashMap();
map.put(keys1, values1);
map.put(keys2, values2);

map = new TreeMap();
map.put(keys1, values1);
map.put(keys2, values2);


理由については、SortedMap インタフェース の javadoc で調べてみてください。
(TreeMap は SortedMap を実装していますが、LinkedHashMap はSortedMap を実装していません。)

#変なサンプルコードだったので修正しました。

[ メッセージ編集済み 編集者: でゅうく 編集日時 2004-03-23 11:43 ]

〔追記〕
引用:

やまとさんの書き込み (2004-03-23 09:18) より:
TreeMap sankaMap = new TreeMap();←←←←←TreeMapに変更しました


最初の投稿時点から LinkedHashMap では無く TreeMap だったのでしょうか?
後、TreeMap の使用方法を理解されていますか?

[ メッセージ編集済み 編集者: でゅうく 編集日時 2004-03-23 11:56 ]

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