[Seasar-user:9145] Re: pom.xmlのdependencyにcommons-configuration-1.4.jarを追加するとNoSuchMethodError

k.moriwaki [E-MAIL ADDRESS DELETED]
2007年 7月 13日 (金) 12:06:46 JST


森脇です。

> これには
>     <dependency>
>       <groupId>servletapi</groupId>
>       <artifactId>servletapi</artifactId>
>       <version>2.4</version>
>       <optional>true</optional>
>     </dependency>
optionalがtrueになっているのでこれではありません。

commons-configuration.jarが依存しているcommons-jxpath-1.2.jarの
commons-jxpath-1.2.pomに

    <dependency>
      <groupId>servletapi</groupId>
      <artifactId>servletapi</artifactId>
      <version>2.2</version>
    </dependency>

と書かれているのでservletapi-2.2.jarが含まれることになります。

さらにservletapi-2.2.pomを見ると

    <relocation>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.2</version>
    </relocation>

と書かれているので

      <exclusion>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
      </exclusion>

とすることで除外する事ができます。


07/07/13 に Taro Unno<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 海野です。
>
> 森脇さん、ずばり解決しました。
> 大変助かりました。感謝致します。
>
> pom.xmlの勉強不足ですね、お恥ずかしい限りです。
> 恥かきついでに、もう1つ、出来れば教えてください。
>
> 実は私もcommons-configurationのpomを見ていたのですが、ファイルは
> http://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.4/commons-configuration-1.4.pom
> のことではないのでしょうか。
> (セントラルリポジトリのpomで、こちらのローカルリポジトリにも
> 同じものがダウンロードされています。)
>
> これには
>     <dependency>
>       <groupId>servletapi</groupId>
>       <artifactId>servletapi</artifactId>
>       <version>2.4</version>
>       <optional>true</optional>
>     </dependency>
> と書かれていて、バージョンは2.4と書かれているのに
> どうしてクラスパスには2.2が設定されるのかわかりませんでした。
>
> 森脇さんはどこのpom.xmlをご覧になったのですか?
>
> 宜しくお願い致します。
>
>
> 07/07/13 に k. moriwaki<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > 森脇と申します。
> >
> > 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を追加すればよいかと思います。
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



Seasar-user メーリングリストの案内