Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swagger support doesn't work on Scala 2.10? #256

Closed
12foo opened this issue Feb 28, 2013 · 2 comments
Closed

Swagger support doesn't work on Scala 2.10? #256

12foo opened this issue Feb 28, 2013 · 2 comments

Comments

@12foo
Copy link

12foo commented Feb 28, 2013

Hi,

is it possible that Swagger is broken on Scala 2.10? I've tried a few things, but I can't get it to start, so maybe it's not just me. I'm not too familiar with either Scalatra or the new features in 2.10, but it seems Swagger's reflection is somehow doing bad things (throws a NoSuchFieldException on starting the container).

I've created a test project on GitHub - it's just the vanilla g8 template with the Swagger support and one Swagger annotation added, and throws the error below.

Using:
Scalatra 2.2
Scala 2.10
SBT 0.12.2
JDK 7

18:46:59.465 [pool-6-thread-4] ERROR o.scalatra.servlet.ScalatraListener - Failed to initialize scalatra application at 
java.lang.NoSuchFieldException: MODULE$
    at java.lang.Class.getField(Class.java:1539) ~[na:1.7.0_15]
    at org.scalatra.swagger.reflect.Reflector$$anonfun$5.apply(Reflector.scala:158) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.reflect.Reflector$$anonfun$5.apply(Reflector.scala:157) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at scala.Option.map(Option.scala:145) ~[scala-library.jar:0.12.2]
    at org.scalatra.swagger.reflect.Reflector$.createClassDescriptor(Reflector.scala:156) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.reflect.Reflector$$anonfun$describe$2.apply(Reflector.scala:61) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.reflect.Reflector$$anonfun$describe$2.apply(Reflector.scala:61) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.reflect.package$Memo$$anonfun$apply$1.apply(package.scala:12) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189) ~[scala-library.jar:0.12.2]
    at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91) ~[scala-library.jar:0.12.2]
    at org.scalatra.swagger.reflect.package$Memo.apply(package.scala:12) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.reflect.Reflector$.describe(Reflector.scala:61) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.Swagger$.collectModels(Swagger.scala:49) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.Swagger$.collectModels(Swagger.scala:38) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at org.scalatra.swagger.SwaggerSupportSyntax$class.registerModel(SwaggerSupport.scala:346) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at com.test.test.MyScalatraServlet.registerModel(MyScalatraServlet.scala:7) ~[classes/:na]
    at org.scalatra.swagger.SwaggerSupport$class.apiOperation(SwaggerSupport.scala:459) ~[scalatra-swagger_2.10-2.2.0.jar:2.2.0]
    at com.test.test.MyScalatraServlet.apiOperation(MyScalatraServlet.scala:7) ~[classes/:na]
    at com.test.test.MyScalatraServlet.<init>(MyScalatraServlet.scala:12) ~[classes/:na]
    at ScalatraBootstrap.init(ScalatraBootstrap.scala:13) ~[classes/:na]
[... jetty stuff ...]
@casualjim
Copy link
Member

you have to give your api operation a return type

apiOperation[Unit] for void

@12foo
Copy link
Author

12foo commented Feb 28, 2013

I can't believe I didn't see that. I made the same mistake in a test servlet I'd forgotten about in my actual project (the main servlet has return types). Thanks! Very sorry for being a dunce.

@12foo 12foo closed this as completed Feb 28, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants