[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 メーリングリストの案内