[Seasar-user:9139] Re: pom.xmlのdependencyにcommons-configuration-1.4.jarを追加するとNoSuchMethodError
k.moriwaki
[E-MAIL ADDRESS DELETED]
2007年 7月 13日 (金) 10:00:27 JST
森脇と申します。
commons-configurationのpom.xmlを見てみたところ、
dependenciesに以下のJarが書かれていました。
・ant-optional-1.5.1.jar
・avalon-framework-4.1.3.jar
・commons-beanutils-1.7.0.jar
・commons-beanutils-core-1.7.0.jar
・commons-codec-1.3.jar
・commons-collections-3.2.jar
・commons-digester-1.8.jar
・commons-jxpath-1.2.jar
・commons-lang-2.3.jar
・commons-logging-1.1.jar
・commons-logging-api-1.0.4.jar
・jdom-b9.jar
・junit-3.8.jar
・log4j-1.2.12.jar
・logkit-1.0.1.jar
・servlet-api-2.2.jar
・xerces-1.2.3.jar
・xml-apis-1.0.b2.jar
この中にservlet-api-2.2.jarとxerces-1.2.3.jarが含まれているため、
classpathに追加されたのだと思います。
なので
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.4</version>
</dependency>
を
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.4</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
</exclusion>
</exclusions>
</dependency>
とすれば含まれなくなるはずです。
後はプロジェクトに合わせてexclusionを追加すればよいかと思います。
07/07/13 に Taro Unno<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 海野です。
> いつもお世話になっております。
>
> Seasar2.4.15
> Teeda1.0.8-RC1(tigerのみSNAPSHOT)
> Java1.5.0_12
> Tomcat5.5.23(Eclipse+WTP1.5)
> Maven2.0.6
>
> で開発しております。
> pom.xmlのdependencyにcommons-configuration-1.4.jarを追加し
> 追加する前まで動作していたログイン画面にアクセスすると
> java.lang.NoSuchMethodErrorが発生するという現象に悩まされています。
>
>
> NoSuchMethodErrorなので、コンパイル時に存在したクラスが
> 実行時に存在しないのだと思っています。
>
> 追加前と追加後のEclipseの.classpathファイルを見ると、
> ・順番が変わっている
> ・なぜかservletapi-2.2.jarが追加される
> ので、ここに原因があるような気がしています。
>
> TeedaSAXParser.java:26の
> super(new TeedaXMLConfiguration());
> で実行している親クラスorg.apache.xerces.parsers.SAXParserに
> 引数無しのコンストラクタがないのが原因であると読み取れ、
> Eclipseの「宣言を開く」でSAXParserを開こうとすると
> xerces-1.2.3.jarを参照しにいこうとします。
> (ソースを入手できてないので、本当にコンストラクタがあるのかないのか
> 現時点で分かっておりません。)
>
>
> どなたか見当のつく方、何でも結構ですので、宜しくお願い致します。
>
>
> (あと、なぜservletapi-2.2.jarがクラスパスに追加されてしまうのかも
> 見当ついたらお願いします。
> Seasar2.4.14ではクラスパスでの順番が
> geronimo-servlet_2.4_spec-1.0.jarよりも先になってしまい困りましたが
> 2.4.15では後になり、とりあえず問題ではなくなりました。)
>
>
> ■追加した依存性
> <dependency>
> <groupId>commons-configuration</groupId>
> <artifactId>commons-configuration</artifactId>
> <version>1.4</version>
> </dependency>
>
>
>
> <NoSuchMethodErrorここから>---------------------------
> java.lang.NoSuchMethodError:
> org.apache.xerces.parsers.SAXParser.<init>(Lorg/apache/xerces/xni/parser/XMLParserConfiguration;)V
> at org.seasar.teeda.extension.html.impl.TeedaSAXParser.<init>(TeedaSAXParser.java:26)
> at org.seasar.teeda.extension.html.impl.HtmlParserImpl.parse(HtmlParserImpl.java:50)
> at org.seasar.teeda.extension.html.impl.HtmlDescCacheImpl.createHtmlDesc(HtmlDescCacheImpl.java:114)
> at org.seasar.teeda.extension.html.impl.HtmlDescCacheImpl.createHtmlDescFromRealPath(HtmlDescCacheImpl.java:87)
> at org.seasar.teeda.extension.html.impl.HtmlDescCacheImpl.createHtmlDesc(HtmlDescCacheImpl.java:74)
> at org.seasar.teeda.extension.html.impl.TagProcessorCacheImpl.updateTagProcessor(TagProcessorCacheImpl.java:75)
> at org.seasar.teeda.extension.html.impl.HtmlViewHandler.restoreView(HtmlViewHandler.java:98)
> at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.composeViewRoot(RestoreViewPhase.java:113)
> at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.executePhase(RestoreViewPhase.java:81)
> at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:55)
> at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:68)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:92)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at aaa.bbb.filter.AaaLoginFilter.doFilter(AaaLoginFilter.java:45)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at aaa.bbb.filter.AaaAuthFilter.doFilter(AaaAuthFilter.java:54)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:64)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
> at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
> at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
> at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
> at java.lang.Thread.run(Thread.java:595)
> <NoSuchMethodErrorここまで>---------------------------
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
Seasar-user メーリングリストの案内