salat/salat

JDK 1.8 Update 20

pejax opened this issue · 28 comments

I updated to JDK 1.8.0_20 from JDK 1.8.0_11 on OS-X 10.9.4 today and my Scala Play 2.2.3 project crashes at startup now. I reverted to 1.8.0_11. Could you take a look please?

scala.tools.scalap.scalax.rules.ScalaSigParserError: Unexpected error: Not a valid class file
scala.tools.scalap.scalax.rules.Rules$$anonfun$expect$1.apply(Rules.scala:76)
scala.tools.scalap.scalax.rules.scalasig.ClassFileParser$.parse(ClassFileParser.scala:97)
com.novus.salat.util.ScalaSigUtil$.parseClassFileFromByteCode(ScalaSigUtil.scala:36)
com.novus.salat.util.ScalaSigUtil$.parseScalaSig0(ScalaSigUtil.scala:79)
com.novus.salat.ClassAnalyzer$.findSym(ClassAnalyzer.scala:48)
com.novus.salat.ClassAnalyzer.(ClassAnalyzer.scala:136)
com.novus.salat.ConcreteGrater.ca$lzycompute(Grater.scala:118)
com.novus.salat.ConcreteGrater.ca(Grater.scala:118)
com.novus.salat.ConcreteGrater.asObject(Grater.scala:294)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
scala.Option.map(Option.scala:145)
com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:349)
com.novus.salat.dao.ModelCompanion$class.findOne(ModelCompanion.scala:176)
models.Admin$.findOne(Admin.scala:15)
com.novus.salat.dao.BaseDAOMethods$class.findOne(DAO.scala:116)
models.Admin$.findOne(Admin.scala:15)
models.Admin$.findByEmail(Admin.scala:23)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:20)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:18)
scala.Option.map(Option.scala:145)
Global$$anonfun$onStart$1.apply(Global.scala:18)
Global$$anonfun$onStart$1.apply(Global.scala:17)
scala.collection.immutable.List.flatMap(List.scala:327)
Global$.onStart(Global.scala:17)
play.api.GlobalPlugin.onStart(GlobalSettings.scala:220)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
scala.collection.immutable.List.foreach(List.scala:381)
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.utils.Threads$.withContextClassLoader(Threads.scala:21)
play.api.Play$.start(Play.scala:90)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:157)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130)
scala.Option.map(Option.scala:145)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128)
scala.util.Success.flatMap(Try.scala:230)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:128)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:120)
scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

Did you try cleaning and recompiling? Does deserialization work from the
command line? Which version of salat are you using?

On 20 August 2014 11:36, pejaham notifications@github.com wrote:

I updated to JDK 1.8.0_20 from JDK 1.8.0_11 on OS-X 10.9.4 today and my
Scala Play 2.2.3 project crashes at startup now. I reverted to 1.8.0_11.
Could you take a look please?

scala.tools.scalap.scalax.rules.ScalaSigParserError: Unexpected error: Not
a valid class file

scala.tools.scalap.scalax.rules.Rules$$anonfun$expect$1.apply(Rules.scala:76)

scala.tools.scalap.scalax.rules.scalasig.ClassFileParser$.parse(ClassFileParser.scala:97)

com.novus.salat.util.ScalaSigUtil$.parseClassFileFromByteCode(ScalaSigUtil.scala:36)
com.novus.salat.util.ScalaSigUtil$.parseScalaSig0(ScalaSigUtil.scala:79)
com.novus.salat.ClassAnalyzer$.findSym(ClassAnalyzer.scala:48)
com.novus.salat.ClassAnalyzer.(ClassAnalyzer.scala:136)
com.novus.salat.ConcreteGrater.ca$lzycompute(Grater.scala:118)
com.novus.salat.ConcreteGrater.ca(Grater.scala:118)
com.novus.salat.ConcreteGrater.asObject(Grater.scala:294)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
scala.Option.map(Option.scala:145)
com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:349)
com.novus.salat.dao.ModelCompanion$class.findOne(ModelCompanion.scala:176)
models.Admin$.findOne(Admin.scala:15)
com.novus.salat.dao.BaseDAOMethods$class.findOne(DAO.scala:116)
models.Admin$.findOne(Admin.scala:15)
models.Admin$.findByEmail(Admin.scala:23)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:20)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:18)
scala.Option.map(Option.scala:145)
Global$$anonfun$onStart$1.apply(Global.scala:18)
Global$$anonfun$onStart$1.apply(Global.scala:17)
scala.collection.immutable.List.flatMap(List.scala:327)
Global$.onStart(Global.scala:17)
play.api.GlobalPlugin.onStart(GlobalSettings.scala:220)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
scala.collection.immutable.List.foreach(List.scala:381)
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.utils.Threads$.withContextClassLoader(Threads.scala:21)
play.api.Play$.start(Play.scala:90)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:157)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130)
scala.Option.map(Option.scala:145)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128)
scala.util.Success.flatMap(Try.scala:230)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:128)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:120)

scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)

scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)

scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)

scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133.

Updated salat CI config to test against jdk8 -

https://travis-ci.org/novus/salat/builds/33082946

On 20 August 2014 11:40, rose katherine toomey rktoomey@gmail.com wrote:

Did you try cleaning and recompiling? Does deserialization work from the
command line? Which version of salat are you using?

On 20 August 2014 11:36, pejaham notifications@github.com wrote:

I updated to JDK 1.8.0_20 from JDK 1.8.0_11 on OS-X 10.9.4 today and my
Scala Play 2.2.3 project crashes at startup now. I reverted to 1.8.0_11.
Could you take a look please?

scala.tools.scalap.scalax.rules.ScalaSigParserError: Unexpected error:
Not a valid class file

scala.tools.scalap.scalax.rules.Rules$$anonfun$expect$1.apply(Rules.scala:76)

scala.tools.scalap.scalax.rules.scalasig.ClassFileParser$.parse(ClassFileParser.scala:97)

com.novus.salat.util.ScalaSigUtil$.parseClassFileFromByteCode(ScalaSigUtil.scala:36)
com.novus.salat.util.ScalaSigUtil$.parseScalaSig0(ScalaSigUtil.scala:79)
com.novus.salat.ClassAnalyzer$.findSym(ClassAnalyzer.scala:48)
com.novus.salat.ClassAnalyzer.(ClassAnalyzer.scala:136)
com.novus.salat.ConcreteGrater.ca$lzycompute(Grater.scala:118)
com.novus.salat.ConcreteGrater.ca(Grater.scala:118)
com.novus.salat.ConcreteGrater.asObject(Grater.scala:294)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
scala.Option.map(Option.scala:145)
com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:349)
com.novus.salat.dao.ModelCompanion$class.findOne(ModelCompanion.scala:176)
models.Admin$.findOne(Admin.scala:15)
com.novus.salat.dao.BaseDAOMethods$class.findOne(DAO.scala:116)
models.Admin$.findOne(Admin.scala:15)
models.Admin$.findByEmail(Admin.scala:23)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:20)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:18)
scala.Option.map(Option.scala:145)
Global$$anonfun$onStart$1.apply(Global.scala:18)
Global$$anonfun$onStart$1.apply(Global.scala:17)
scala.collection.immutable.List.flatMap(List.scala:327)
Global$.onStart(Global.scala:17)
play.api.GlobalPlugin.onStart(GlobalSettings.scala:220)

play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)

play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
scala.collection.immutable.List.foreach(List.scala:381)
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.utils.Threads$.withContextClassLoader(Threads.scala:21)
play.api.Play$.start(Play.scala:90)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:157)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130)
scala.Option.map(Option.scala:145)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128)
scala.util.Success.flatMap(Try.scala:230)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:128)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:120)

scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)

scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)

scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)

scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)

scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133.

It passed but Travis is using 1.8.0_05.

https://travis-ci.org/novus/salat/jobs/33082950

On 20 August 2014 11:48, rose katherine toomey rktoomey@gmail.com wrote:

Updated salat CI config to test against jdk8 -

https://travis-ci.org/novus/salat/builds/33082946

On 20 August 2014 11:40, rose katherine toomey rktoomey@gmail.com wrote:

Did you try cleaning and recompiling? Does deserialization work from the
command line? Which version of salat are you using?

On 20 August 2014 11:36, pejaham notifications@github.com wrote:

I updated to JDK 1.8.0_20 from JDK 1.8.0_11 on OS-X 10.9.4 today and my
Scala Play 2.2.3 project crashes at startup now. I reverted to 1.8.0_11.
Could you take a look please?

scala.tools.scalap.scalax.rules.ScalaSigParserError: Unexpected error:
Not a valid class file

scala.tools.scalap.scalax.rules.Rules$$anonfun$expect$1.apply(Rules.scala:76)

scala.tools.scalap.scalax.rules.scalasig.ClassFileParser$.parse(ClassFileParser.scala:97)

com.novus.salat.util.ScalaSigUtil$.parseClassFileFromByteCode(ScalaSigUtil.scala:36)
com.novus.salat.util.ScalaSigUtil$.parseScalaSig0(ScalaSigUtil.scala:79)
com.novus.salat.ClassAnalyzer$.findSym(ClassAnalyzer.scala:48)
com.novus.salat.ClassAnalyzer.(ClassAnalyzer.scala:136)
com.novus.salat.ConcreteGrater.ca$lzycompute(Grater.scala:118)
com.novus.salat.ConcreteGrater.ca(Grater.scala:118)
com.novus.salat.ConcreteGrater.asObject(Grater.scala:294)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
com.novus.salat.dao.SalatDAO$$anonfun$findOne$1.apply(SalatDAO.scala:349)
scala.Option.map(Option.scala:145)
com.novus.salat.dao.SalatDAO.findOne(SalatDAO.scala:349)

com.novus.salat.dao.ModelCompanion$class.findOne(ModelCompanion.scala:176)
models.Admin$.findOne(Admin.scala:15)
com.novus.salat.dao.BaseDAOMethods$class.findOne(DAO.scala:116)
models.Admin$.findOne(Admin.scala:15)
models.Admin$.findByEmail(Admin.scala:23)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:20)
Global$$anonfun$onStart$1$$anonfun$apply$1.apply(Global.scala:18)
scala.Option.map(Option.scala:145)
Global$$anonfun$onStart$1.apply(Global.scala:18)
Global$$anonfun$onStart$1.apply(Global.scala:17)
scala.collection.immutable.List.flatMap(List.scala:327)
Global$.onStart(Global.scala:17)
play.api.GlobalPlugin.onStart(GlobalSettings.scala:220)

play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)

play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
scala.collection.immutable.List.foreach(List.scala:381)
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.api.Play$$anonfun$start$1.apply(Play.scala:91)
play.utils.Threads$.withContextClassLoader(Threads.scala:21)
play.api.Play$.start(Play.scala:90)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:157)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130)
scala.Option.map(Option.scala:145)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130)

play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128)
scala.util.Success.flatMap(Try.scala:230)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:128)

play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:120)

scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)

scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)

scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)

scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)

scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133.

  • I cleaned and recompiled via play commandline
  • How do I deserialize via commandline?
  • used Version 1.9.8 and tried 1.9.9 - but the latest version was not yet available in the repository

1.9.9 is in the repository:
https://oss.sonatype.org/content/repositories/releases/com/novus/salat-core_2.11/1.9.9/

To deserialize at the command line..., open a REPL, import your content
(or com.novus.salat.global._), create a case class instance, and then use
com.novus.salat.grater[X].asDBObject(x).

I can't reproduce your error on our CI server. Since I don't use play
myself, I need your help to determine whether this error happens outside
play.

On 20 August 2014 14:37, pejaham notifications@github.com wrote:

  • I cleaned and recompiled via play commandline
  • How do I deserialize via commandline?
  • used Version 1.9.8 and tried 1.9.9 - but the latest version was not
    yet available in the repository


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133#issuecomment-52822086.

Version 1.9.9 is fetched now - I did not change/add repo path.

I tried the deserialization via command line using these jar versions:
casbah-commons_2.11-2.7.1.jar
casbah-core_2.11-2.7.1.jar
casbah-query_2.11-2.7.1.jar
joda-time-2.4.jar
json4s-ast_2.11-3.2.9.jar
json4s-core_2.11-3.2.9.jar
json4s-native_2.11-3.2.9.jar
mongo-java-driver-2.12.1.jar
salat-core_2.11-1.9.9.jar
salat-util_2.11-1.9.9.jar

Before trying JDK 1.8.0_20 I tried with 1.8.0_11 in the Scala REPL - but I get an error:

[peter@Peters-MacBook-Pro salat]$ scala -classpath "*.jar"
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_11).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import com.novus.salat.global._
import com.novus.salat.global._

scala> case class X(n: Int)
defined class X

scala> val x = X(10)
x: X = X(10)

scala> com.novus.salat.grater[X].asDBObject(x)
com.novus.salat.util.GraterGlitch:

  GRATER GLITCH - unable to find or instantiate a grater using supplied path name

  REASON: Very strange!  Path='X' from pickled ScalaSig causes ClassNotFoundException

  Context: 'global'
  Path from pickled Scala sig: 'X'

at com.novus.salat.Context$class.lookup(Context.scala:213)
at com.novus.salat.global.package$$anon$1.lookup(global.scala:29)
at com.novus.salat.package$.grater(package.scala:62)
... 33 elided

scala>

Try running sbt console.

On 20 August 2014 18:06, pejaham notifications@github.com wrote:

Version 1.9.9 is fetched now - I did not change/add repo path.

I tried the deserialization via command line using these jar versions:
casbah-commons_2.11-2.7.1.jar
casbah-core_2.11-2.7.1.jar
casbah-query_2.11-2.7.1.jar
joda-time-2.4.jar
json4s-ast_2.11-3.2.9.jar
json4s-core_2.11-3.2.9.jar
json4s-native_2.11-3.2.9.jar
mongo-java-driver-2.12.1.jar
salat-core_2.11-1.9.9.jar
salat-util_2.11-1.9.9.jar

Before trying JDK 1.8.0_20 I tried with 1.8.0_11 in the Scala REPL - but I
get an error:

[peter@Peters-MacBook-Pro salat]$ scala -classpath "*.jar"
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java
1.8.0_11).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import com.novus.salat.global._
import com.novus.salat.global._

scala> case class X(n: Int)
defined class X

scala> val x = X(10)
x: X = X(10)

scala> com.novus.salat.grater[X].asDBObject(x)
com.novus.salat.util.GraterGlitch:

GRATER GLITCH - unable to find or instantiate a grater using supplied path name

REASON: Very strange! Path='X' from pickled ScalaSig causes ClassNotFoundException

Context: 'global'
Path from pickled Scala sig: 'X'

at com.novus.salat.Context$class.lookup(Context.scala:213)
at com.novus.salat.global.package$$anon$1.lookup(global.scala:29)
at com.novus.salat.package$.grater(package.scala:62)
... 33 elided

scala>


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133#issuecomment-52851678.

Also, you can't define a case class in the Scala REPL and then try to serialize it - that's why you run sbt console in your project. It's a limitation of how the REPL handles Scala signatures. I reported it as a bug back in 2.9 but it's never been fixed.

Running sbt console gives me the same error message (ClassNotFoundException). I wrapped the test code into an App, compiled and ran with sbt under JDK 1.8.0_11 and 1.8.0_20 - both work fine. So the problem seems to be PlayFramework related, I am afraid.
Thanks for your help.

Let's see if we can find someone at typeset to assist. I'm happy to help
debug, I just don't have a lot of experience with play.

The first step is to create a github project with a small app project that
demonstrates the error. Then email their mailing list and see if someone
can help. If not, we can try contacting typesafe directly.

On Thursday, August 21, 2014, pejaham notifications@github.com wrote:

Running sbt console gives me the same error message
(ClassNotFoundException). I wrapped the test code into an App, compiled and
ran with sbt under JDK 1.8.0_11 and 1.8.0_20 - both work fine. So the
problem seems to be PlayFramework related, I am afraid.
Thanks for your help.


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133#issuecomment-52906847.

I set up a simple Play project with only one case class (identical to the original project) and a Mongo request in the Global->onStart() function (just like in the original project where the problem occurs) - no problem. I have to investigate further and try to provoke the problem with a simple test case.
Thanks for your help.

I just run into the same issue after upgrading to jdk 1.8.0_20.

Salat 1.9.9, Scala 2.11, I did clean compilation.
The strangest thing is that the error is intermittent. I tried to debug and it deserialized successfully, then I allowed the program to continue and it started complaining about another class. When I restarted the app it again failed at the first one.

And I don't use Play, if it matters.

@wajda, are you able to create a sample project on Github that demonstrates this error?

I upgraded my local JVM to 1.8.0_20 and ran the tests ten times in a row without seeing any failures.

travis-ci/travis-ci#2758 - there's an issue open on Travis-CI to upgrade oraclejdk8 from 8u5 to 8u20.

My environment, where I have not yet reproduced this error:

$ java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

I am using the sbt-extras launcher:

$ sbt -v
No extra sbt options have been defined
Detected sbt version 0.13.5
Starting sbt: invoke with -help for other options
Using default jvm options
# Executing command line:
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home//bin/java
-Dfile.encoding=UTF8
-XX:MaxPermSize=384m
-Xms512m
-Xmx1536m
-Xss2m
-XX:ReservedCodeCacheSize=256m
-XX:+TieredCompilation
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
-jar
/Users/rosetoomey/.sbt/launchers/0.13.5/sbt-launch.jar
shell

Here are the release notes for 8u20, I will go through them in detail tonight:
http://www.oracle.com/technetwork/java/javase/8u20-relnotes-2257729.html

@wajda, @pejaham - please comment back on this ticket with anything you discover. This looks like an exciting mystery!

@wajda - by "clean compilation" do you mean that you ran sbt clean or that you recursively deleted all the target directories inside your project and then compiled? Under certain conditions, sbt clean doesn't get absolutely everything. Can you reproduce the error if you recursively delete all the target dirs and then recompile with 8u20?

I have also tried to run Salat tests on Java 1.8.0_20 and they passed. Unfortunately I have yet to reproduce the error with a simple test. But in my project in reproduced in 100% cases for one class or another. I had to downgrade to Java 1.8.0_11 in order to be able to proceed with my project.

Re the "clean compile", I use Maven for builds and I have physically deleted all the target folders before retry.

Don't know if this is any help, but we've been experiencing the issue and we have an example bytecode file that fails to parse. What we don't have is a consistently reproducible test case - it happens, we re-build, it doesn't happen for a while, and then it happens again.

We're also seeing this issue in the following setup:

  • Scala 2.11.5
  • JRE build 1.8.0_25-b17
  • HotSpot build 25.25-b02 (mixed mode)

However, interesting is that everything is running with Scala 2.10.4 and the same 1.8 JVM.

Edit:
I tried to reproduce the issue with a 1.8_05 jvm. unfortunately, I'm on OSX 10.10 (Yosemite) and can't install the 1.8_05 :-(

Is 2.11.4 working in this setup?
On Thu, Jan 15, 2015 at 03:48 anfuerer notifications@github.com wrote:

We're also seeing this issue in the following setup:

  • Scala 2.11.5
  • JRE build 1.8.0_25-b17
  • HotSpot build 25.25-b02 (mixed mode)

However, interesting is that everything is running with Scala 2.10.4 and
the same 1.8 JVM.


Reply to this email directly or view it on GitHub
https://github.com/novus/salat/issues/133#issuecomment-70055726.

Unfortunately, can't test. Compilation of our project with 2.11.4 doesn't terminate due to https://issues.scala-lang.org/browse/SI-9032

Is 2.11.4 working in this setup?

I just had the issue with scala 2.10.4 and the 1.8 JVM as well. So, please ignore my statement in the comment above.

Not sure if this'll be useful, but I had the same bug under different conditions. I'm running under Intellij IDEA 13, JDK 1.8.0_25, with Scala 2.11.2.

Everything works just fine when I run the code, but when I try to debug the code (with IDEA), the exact same code fails consistently when trying to deserialize a case object.
The case object is extremely simple, just something used as a placeholder in the object when some data isn't know, and contains only a string, although it is pretty deeply nested in a larger object.

I have the bytecode file of the case object in question, as well as the error output here:
(through the intellij "View Bytecode" plugin.): https://gist.github.com/gabeos/1e90dc497a49e5eea389

Let me know if there's any other info I can provide that might help you track this one down.

sief commented

I just noticed that I can reproduce this only when play is run in dev mode (activator run), so far no problems in prod mode (activator start). Tests are also ok. Maybe this is related to play's hot code reloading.

Environment:
OSX 10.10.1
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
Scala 2.11.5
sbt 0.13.7
play 2.3.7

Tried again with JDK1.8.0_40 - seems to be back working.

wajda commented

Yes, it works fine now. So it was a Java bug and it's fixed in the recent updates.