Skip to content

Instantly share code, notes, and snippets.

@mumoshu
Created December 7, 2009 15:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mumoshu/250888 to your computer and use it in GitHub Desktop.
Save mumoshu/250888 to your computer and use it in GitHub Desktop.
http://groups.google.com/group/simple-build-tool/browse_thread/thread/c15d5d6430513915#
*** だめなプロジェクト(java.lang.NoSuchMethodError: javax.servlet.http.Cookie.setHttpOnly(Z)Vになる)
> console-project
[info] Starting scala interpreter with project definition step ...
[info]
current: StepProject = Project step
import sbt._
import Process._
import current._
Welcome to Scala version 2.7.5.final (OpenJDK Client VM, Java 1.6.0_0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> jettyRunClasspath.get.foreach(println)
./target/classes
scala> jettyClasspath.get.foreach(println)
./lib_managed/test/scalatest-0.9.5.jar
./lib_managed/provided/servlet-api-2.5.jar
./lib_managed/test/jetty-7.0.0pre3.jar
./lib_managed/test/jetty-servlet-tester-7.0.0pre3.jar
./lib_managed/test/servlet-api-3.0.pre1.jar
./lib_managed/test/jetty-util-7.0.0pre3.jar
*** いいプロジェクト
> console-project
[info] Starting scala interpreter with project definition step ...
[info]
current: StepProject = Project step
import sbt._
import Process._
import current._
Welcome to Scala version 2.7.5.final (OpenJDK Client VM, Java 1.6.0_0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> jettyRunClasspath.get.foreach(println)
./target/classes
scala> jettyClasspath.get.foreach(println)
./lib_managed/test/servlet-api-3.0.pre1.jar
./lib_managed/provided/servlet-api-2.5.jar
./lib_managed/test/scalatest-0.9.5.jar
./lib_managed/test/jetty-servlet-tester-7.0.0pre3.jar
./lib_managed/test/jetty-util-7.0.0pre3.jar
./lib_managed/test/jetty-7.0.0pre3.jar
*** StepProject.scalaのservletのバージョンを3.0にしてsbt updateしてみたらエラー
> update
[info]
[info] == update ==
[warn] module not found: javax.servlet#servlet-api;3.0
[warn] ==== local: tried
[warn] /home/ykuoka/.ivy2/javax.servlet/servlet-api/3.0/ivys/ivy.xml
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] /home/ykuoka/.ivy2/javax.servlet/servlet-api/3.0/jars/servlet-api.jar
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/javax/servlet/servlet-api/3.0/servlet-api-3.0.pom
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] http://repo1.maven.org/maven2/javax/servlet/servlet-api/3.0/servlet-api-3.0.jar
[warn] ==== Scala-Tools Maven2 Repository: tried
[warn] http://scala-tools.org/repo-releases/javax/servlet/servlet-api/3.0/servlet-api-3.0.pom
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] http://scala-tools.org/repo-releases/javax/servlet/servlet-api/3.0/servlet-api-3.0.jar
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: javax.servlet#servlet-api;3.0: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[info]
[warn] :: problems summary ::
[warn] :::: WARNINGS
[warn] module not found: javax.servlet#servlet-api;3.0
[warn] ==== local: tried
[warn] /home/ykuoka/.ivy2/javax.servlet/servlet-api/3.0/ivys/ivy.xml
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] /home/ykuoka/.ivy2/javax.servlet/servlet-api/3.0/jars/servlet-api.jar
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/javax/servlet/servlet-api/3.0/servlet-api-3.0.pom
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] http://repo1.maven.org/maven2/javax/servlet/servlet-api/3.0/servlet-api-3.0.jar
[warn] ==== Scala-Tools Maven2 Repository: tried
[warn] http://scala-tools.org/repo-releases/javax/servlet/servlet-api/3.0/servlet-api-3.0.pom
[warn] -- artifact javax.servlet#servlet-api;3.0!servlet-api.jar:
[warn] http://scala-tools.org/repo-releases/javax/servlet/servlet-api/3.0/servlet-api-3.0.jar
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: javax.servlet#servlet-api;3.0: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[info]
[info] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
[info] == update ==
[error] Error running update: unresolved dependency: javax.servlet#servlet-api;3.0: not found
emacs project/build/src/StepProject.scala
val servlet = "org.mortbay.jetty" % "servlet-api" % "3.0.pre1" % "provided->default"
どうやら古いservlet-api(2.5)を参照しているのが根本原因らしい。
コンパイルはservlet-api(3.0)で通していて、
クラスパス(Set)の並び順によって偶然実行時にもservlet-api(3.0)を読みに行く(こちらが正しい)場合は正しく動いていて、
なんかの加減でSetの並び順が変わって(フォルダを変えるとかwそんなのありか)2.5を優先的に読みにいってしまうと動かなくなる、
という話だったと思われる。
val servlet = "org.mortbay.jetty" % "servlet-api" % "3.0.pre1" % "provided->default"
でコンパイル時にも実行時にも必ず3.0.pre1(jetty-7とおそろいにしている。~/.ivy2/あたりを参照)を読むようにすれば万事解決。
参考: 3.0.pre1とか指定したときにivyがダウンロードしにいくのはここ。
http://repo2.maven.org/maven2/org/mortbay/jetty/servlet-api/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment