If it's any comfort, I've done a similar thing recently... my buildr extension would rm_rf() a directory but with shadowing used the wrong instance variable. The kind of embarrasing bug you never see by yourself ;)
alex On Mon, Aug 10, 2009 at 8:27 PM, Martin Grotzke < [email protected]> wrote: > Just to let you know: this was a really bad - homegrown - thing. Nothing > with buildr and nothing with scala. > > Sorry for disturbing, > cheers, > Martin > > > PS: For those that are really interested: There was a teardown method > that - in simple words - deleted everything (recursively) from > getClass.getResource(".") > %$&#?!& > > > On Mon, 2009-08-10 at 16:36 +0200, Martin Grotzke wrote: > > Hi, > > > > we're just getting an exception when we use anonymous functions in > > scala: > > > > java.lang.NoClassDefFoundError: > org/proj/module1/model/EmailMessageAttachmentsTest$$anonfun$filterByType$1 > > at > org.proj.module1.model.EmailMessageAttachmentsTest.filterByType(EmailMessageAttachmentsTest.scala:32) > > at > org.proj.module1.model.EmailMessageAttachmentsTest.testExtractAttachmentsFrom_zipFile_containing_folders(EmailMessageAttachmentsTest.scala:66) > > Caused by: java.lang.ClassNotFoundException: > org.proj.module1.model.EmailMessageAttachmentsTest$$anonfun$filterByType$1 > > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > > at java.security.AccessController.doPrivileged(Native Method) > > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > > > > In line 32 there's an anonymous function passed to the filter method: > > val attachments: List[SourceDocument] = ... > > attachments.filter(_.mimeType.equals("image/png")). > > > > When the filter function is written with a while loop this does not > > happen: > > def filterByType(attachments: List[SourceDocument]): > > List[SourceDocument] = { > > var result = List[SourceDocument]() > > val elements = attachments.elements > > while(elements.hasNext) { > > val a = elements.next > > println("Have mimeType: " + a.mimeType) > > if ( a.mimeType.equals("") ) { > > result = a :: result > > } > > } > > result > > } > > > > It seems that this problem does only occur with our own types, and > > perhaps only with types that reference types defined in another > > submodule (build module in this case), that's referenced in the > > buildfile via compile.with(projects("module2")). (I'm currently trying > > to narrow this down) > > > > What's definitely no problem is s.th. like this: > > > > @Test > > def testAnonymousFunctionWithJustStrings { > > val attachments = List("foo", "bar") > > val filtered = attachments.filter(_.equals("foo")) > > assertEquals(filtered.size, 1) > > } > > > > This issue took already half of my day now, and I'm not sure if it's > > somehow related to buildr or if it's just scala. > > > > FWIW, I wanted to ask if somebody already experienced s.th. similar. > > > > Btw: this does happen with and without fsc... > > > > Thanx && cheers, > > Martin > > >
