bmc / classutil Goto Github PK
View Code? Open in Web Editor NEWScala-friendly, fast class-finder library (using ASM under the covers)
Home Page: http://software.clapper.org/classutil/
License: Other
Scala-friendly, fast class-finder library (using ASM under the covers)
Home Page: http://software.clapper.org/classutil/
License: Other
the following code in a class constructor executed in IntelliJ IDEA 14.1:
class TestAllTransformers extends SpookyEnvSuite {
val files = sys.props("java.class.path").split(":").map(new File()).filter(.exists())
val finder: ClassFinder = ClassFinder(files)
val classes: Iterator[ClassInfo] = finder.getClasses().iterator
results in the following error:
An exception or error caused a run to abort.
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(ClassReader.java:170)
at org.objectweb.asm.ClassReader.(ClassReader.java:153)
at org.objectweb.asm.ClassReader.(ClassReader.java:424)
at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:189)
at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$classData(ClassFinder.scala:406)
at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:364)
at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:364)
at scala.collection.immutable.Stream.map(Stream.scala:376)
at org.clapper.classutil.ClassFinder.processOpenZip(ClassFinder.scala:364)
at org.clapper.classutil.ClassFinder.processJar(ClassFinder.scala:318)
at org.clapper.classutil.ClassFinder.findClassesIn(ClassFinder.scala:307)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:299)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:299)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:299)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:299)
at org.clapper.classutil.ClassFinder.getClasses(ClassFinder.scala:289)
at com.tribbloids.spookystuff.pipeline.TestAllTransformers.(TestAllTransformers.scala:15)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:2644)
at org.scalatest.tools.Runner$$anonfun$37.apply(Runner.scala:2461)
at org.scalatest.tools.Runner$$anonfun$37.apply(Runner.scala:2460)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2460)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)
at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)
at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)
at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)
at org.scalatest.tools.Runner$.run(Runner.scala:883)
at org.scalatest.tools.Runner.run(Runner.scala)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)
at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
Process finished with exit code 0
The problem exists with jdk > 11, but in jdk 17 the workaround also stops working:
[error] OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
[error] Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make public java.lang.String java.util.jar.JarFile$JarFileEntry.getName() accessible: module java.base does not "opens java.util.jar" to unnamed module @1068e947
[error] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
[error] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
[error] at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
[error] at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
[error] at scala.reflect.package$.ensureAccessible(package.scala:62)
[error] at scala.runtime.ScalaRunTime$.ensureAccessible(ScalaRunTime.scala:153)
[error] at org.clapper.classutil.ClassFinder.reflMethod$Method2(ClassFinder.scala:375)
[error] at org.clapper.classutil.ClassFinder.isClass(ClassFinder.scala:375)
[error] at org.clapper.classutil.ClassFinder.$anonfun$processOpenZip$1(ClassFinder.scala:358)
[error] at org.clapper.classutil.ClassFinder.$anonfun$processOpenZip$1$adapted(ClassFinder.scala:358)
[error] at scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:472)
[error] at scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:574)
[error] at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:592)
[
There seems to be no support for retrieving the runtime Java annotations of a class. In some situations it is useful to get all classes marked with a certain annotation together with the annotation parameters.
From what I understood in a quick tour around the source code, it would be a matter of overriding visitAnnotation
in your ClassVisitor
and adding a new annotations
field in ClassInfoImpl
, wouldn't it?
Hi,
I have tried the following code which seems to work perfectly:
val path : String = CLI.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
println("Path found " + path)
val finder = ClassFinder(List(path).map(new File(_)))
This detects the jar file I started from, gives me back the path which I then can pass into the class finder. Seems to work for both a classpath to my class files as well as an assembled jar with all dependencies included.
Maybe an idea for the readme, example or the actual code?
I have a scala application and I am packaging it using sbt-one-jar. I am trying to use the ClassUtil to get some annotation details from my jar file. However, I am not able to get the details from one-jar. It is working fine if I run directly in the project. But once the jar is created, it is not getting the classes. I know that the problem is with the one-jar as it packages the jar files in different folder. Is there any way to make the ClassUtil work with one-jar. My sample code with ClassUtil is given below.
def getAnnotations ={
val finder = ClassFinder()
println("full list "+finder.getClasses().size)
finder.getClasses().toList.map(x=> println(" -- "+x))
val classes = finder.getClasses().filter(c => c.implements("work.com.pack.FunctionMetadata"))
println("classes size = "+classes.size)
val allClasses = classes.map { clazz => Class.forName(clazz.name) }
println("size ="+allClasses.size)
val fmAnnotations = allClasses.map { clazz =>
val fields = clazz.getDeclaredFields.filter(field => field.getDeclaredAnnotations.nonEmpty)
val result = fields.toList.map { field =>
val result = field.getDeclaredAnnotations.find(a => a.annotationType().getName == classOf[MyAnnotation].getName)
if (result.isDefined) Some(result.get.asInstanceOf[MyAnnotation]) else None
}
result.filter(_.isDefined).map(_.get)
}.toList.flatten
println("Annotations = "+fmAnnotations)
fmAnnotations
}
The output I am getting is from OneJar classes. Output from running the above code is
full list 20
com.simontuffs.onejar.Handler$1
-- com.simontuffs.onejar.OneJarFile
-- com.simontuffs.onejar.OneJarFile$2
-- com.simontuffs.onejar.JarClassLoader$2
-- com.simontuffs.onejar.OneJarFile$1
-- com.simontuffs.onejar.Boot
-- com.simontuffs.onejar.Boot$3
-- com.simontuffs.onejar.JarClassLoader$1
-- com.simontuffs.onejar.JarClassLoader$OneJarURLFactory
-- com.simontuffs.onejar.JarClassLoader$IURLFactory
-- com.simontuffs.onejar.JarClassLoader
-- com.simontuffs.onejar.OneJarURLConnection
-- com.simontuffs.onejar.Handler
-- com.simontuffs.onejar.Boot$1
-- OneJar
-- com.simontuffs.onejar.IProperties
-- com.simontuffs.onejar.JarClassLoader$ByteCode
-- com.simontuffs.onejar.JarClassLoader$FileURLFactory$1
-- com.simontuffs.onejar.JarClassLoader$FileURLFactory
-- com.simontuffs.onejar.Boot$2
classes size = 0
size =0
Annotations = List()
List()
Hi there! Was checking out the library, which looks really nice. I added the dependency through Maven Central (using sbt 0.13.7) via libraryDependencies += "org.clapper" %% "classutil" % "1.0.5"
, so not sure if that would be an issue since the instructions reference bin-tray. I'm compiling with Scala 2.10.4, by the way.
Anyway, I seem to have encountered an exception when invoking mainClassFinder.getClasses()
where mainClassFinder
is a ClassFinder instance that is using the current classpath. I'm not sure if this is a problem from me adding the dependency from Maven central - FYI, I tried bin-tray afterwards with same result - or if it's an issue with my classpath or something else. Any guidance?
import java.io.File
import org.clapper.classutil.{ClassInfo, ClassFinder}
class ModuleManager(extraClassPaths: Seq[String] = Nil) {
private lazy val mainClassFinder: ClassFinder = ClassFinder()
private lazy val extraClassFinder: Option[ClassFinder] = Option(
if (extraClassPaths.nonEmpty) ClassFinder(extraClassPaths.map(new File(_)))
else null
)
private lazy val allClasses = mainClassFinder.getClasses() ++
extraClassFinder.map(_.getClasses()).getOrElse(Stream.empty[ClassInfo])
private lazy val allClassMap =
ClassFinder.classInfoMap(allClasses.toIterator)
lazy val modules = ClassFinder.concreteSubclasses(
classOf[ModuleLike].getName,
allClassMap
)
modules.foreach(println)
}
Exception in thread "main" java.lang.IncompatibleClassChangeError: class org.clapper.classutil.asm.EmptyVisitor has interface org.objectweb.asm.ClassVisitor as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:190)
at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$classData(ClassFinder.scala:406)
at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:364)
at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:364)
at scala.collection.immutable.Stream.map(Stream.scala:376)
at org.clapper.classutil.ClassFinder.processOpenZip(ClassFinder.scala:364)
at org.clapper.classutil.ClassFinder.processJar(ClassFinder.scala:318)
at org.clapper.classutil.ClassFinder.findClassesIn(ClassFinder.scala:307)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:299)
at org.clapper.classutil.ClassFinder.getClasses(ClassFinder.scala:289)
at com.ibm.spark.kernel.module.ModuleManager.allClasses$lzycompute(ModuleManager.scala:37)
at com.ibm.spark.kernel.module.ModuleManager.allClasses(ModuleManager.scala:37)
at com.ibm.spark.kernel.module.ModuleManager.allClassMap$lzycompute(ModuleManager.scala:40)
at com.ibm.spark.kernel.module.ModuleManager.allClassMap(ModuleManager.scala:39)
at com.ibm.spark.kernel.module.ModuleManager.modules$lzycompute(ModuleManager.scala:45)
at com.ibm.spark.kernel.module.ModuleManager.modules(ModuleManager.scala:42)
at com.ibm.spark.kernel.module.ModuleManager.<init>(ModuleManager.scala:48)
Is possible to use a single directory as classpath?
Doing something like this:
val classpath = List("./src/main/scala/plugins").map(new File(_))
i get an empty classMap.
I'm using a ClassFinder like so:
val file = new File("target/scala-2.8.1.final/test-classes")
val finder = ClassFinder(List(file))
for (c <- finder.getClasses) println(c.name)
There are 288 classes in that folder (many of them anonymous classes or companion objects rather than classes), but only one of them is being printed:
hooks.test.LargeSpec$BadFeature$
I've checked that the classpath is the right folder. I can't see anything about the one class it prints to make it stand out: it's not the first, it's not a container of the others. It's a companion object like dozens of other classes in the folder.
Am I doing it wrong?
MapToBean
generates class names by default (though this can be overridden by callers). Its strategy for doing so, however, is flawed. It uses a random number generator to generate a unique class name, but the random number period is too small, leading to potential re-use of names and, ultimately, errors like this:
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.clapper.classutil.ClassUtil$.loadClass(ClassUtil.scala:149)
at org.clapper.classutil.asm.MapToBeanMapperImpl.makeBean(MapToBeanMapperImpl.scala:131)
at org.clapper.classutil.MapToBean$.apply(MapToBean.scala:164)
at foo$$anonfun$main$1.apply(foo.scala:8)
at foo$$anonfun$main$1.apply(foo.scala:8)
at scala.collection.immutable.Range$ByOne$class.foreach(Range.scala:282)
at scala.collection.immutable.Range$$anon$1.foreach(Range.scala:274)
at foo$.main(foo.scala:8)
at foo.main(foo.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:81)
at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:24)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:86)
at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:81)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:86)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:83)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Caused by: java.lang.LinkageError: loader (instance of scala/tools/nsc/util/ScalaClassLoader$URLClassLoader): attempted duplicate class definition for name: "org/clapper/classutil/MapBean$5743"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
... 23 more
Either widen the range or substitute some other mechanism (e.g., a UUID).
hi,
I want to reflect a high-order function of scala,so i use classUtil to track it, but I found the print sigature of the method is wrong(just print as method name):
import org.clapper.classutil.ClassFinder
import org.clapper.classutil.ClassUtil
import java.io.File
object Main extends App {
val classpath = List(
new File("target/scala-2.10/classes/com/alibaba/fodps/classUtil/"))
val finder = ClassFinder(classpath)
//val classes = finder.getClasses // classes is an Iterator[ClassInfo]
println("interface ...")
val ifaces = finder.getClasses.filter(_.isInterface)
ifaces.foreach(println(_))
println("concrete ...")
val crete = finder.getClasses.filter(_.isConcrete)
for (cls <- crete){
println(cls.name)
if (cls.name == "com.alibaba.fodps.classUtil.Foo$$anonfun$run$1"){
printf("bingo, methods:%s\n",cls.methods)
for (m <- cls.methods){
if (m.name == "apply")
printf("desc=%s,sig=%s\n", m.descriptor, m.signature)
}
}
}
}
use sbt and print:
run
[info] Compiling 1 Scala source to /Users/zhangjun/Documents/workspace/classUtil/target/scala-2.10/classes...
[info] Running com.alibaba.fodps.classUtil.Main
interface ...
concrete ...
com.alibaba.fodps.classUtil.Foo$$anonfun$run$1
bingo, methods:Set(, apply, apply$mcII$sp)
desc=(I)I,sig=apply <--------------------the sig is wrong here!!!
com.alibaba.fodps.classUtil.Foo
com.alibaba.fodps.classUtil.Main$$anonfun$1
com.alibaba.fodps.classUtil.Main$$anonfun$2
com.alibaba.fodps.classUtil.Main$$anonfun$3
com.alibaba.fodps.classUtil.Main$$anonfun$4$$anonfun$apply$1
com.alibaba.fodps.classUtil.Main$$anonfun$4
com.alibaba.fodps.classUtil.Main$
com.alibaba.fodps.classUtil.Main$delayedInit$body
com.alibaba.fodps.classUtil.Main
[success] Total time: 1 s, completed Nov 27, 2013 12:35:14 PM
build.sbt:
scalaVersion := "2.10.2"
libraryDependencies ++= Seq(
"org.scalatest" % "scalatest_2.10" % "2.0" % "test",
"org.slf4j" % "slf4j-api" % "1.7.2",
"org.slf4j" % "slf4j-simple" % "1.7.2",
"org.clapper" % "grizzled-scala_2.10" % "1.1.4",
"org.clapper" % "grizzled-slf4j_2.10" % "1.0.1",
"asm" % "asm" % "3.3.1",
"org.clapper" % "classutil_2.10" % "1.0.2"
)
Hi. I'm doing class lookup on list of jars from Spring application and getting bellow error.
asm-7.1.jar is available in list of jars I'm loading.
classutils: 1.5.0
Java version: 1.8.0_265
java.lang.UnsupportedOperationException: This feature requires ASM7
at org.objectweb.asm.ClassVisitor.visitNestHost(ClassVisitor.java:150)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:550)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:400)
at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:224)
at org.clapper.classutil.ClassFinder.classData(ClassFinder.scala:404)
at org.clapper.classutil.ClassFinder.$anonfun$processOpenZip$2(ClassFinder.scala:359)
at scala.collection.Iterator$$anon$10.next(Iterator.scala:461)
at scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)
at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)
at scala.collection.Iterator.toStream(Iterator.scala:1417)
at scala.collection.Iterator.toStream$(Iterator.scala:1416)
at scala.collection.AbstractIterator.toStream(Iterator.scala:1431)
at scala.collection.Iterator.$anonfun$toStream$1(Iterator.scala:1417)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1173)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1163)
at scala.collection.immutable.Stream.$anonfun$$plus$plus$1(Stream.scala:372)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1173)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1163)
at scala.collection.immutable.Stream.$anonfun$$plus$plus$1(Stream.scala:372)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1173)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1163)
at scala.collection.immutable.StreamIterator.$anonfun$next$1(Stream.scala:1061)
at scala.collection.immutable.StreamIterator$LazyCell.v$lzycompute(Stream.scala:1050)
at scala.collection.immutable.StreamIterator$LazyCell.v(Stream.scala:1050)
at scala.collection.immutable.StreamIterator.hasNext(Stream.scala:1055)
at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:62)
at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:53)
at scala.collection.immutable.Map$MapBuilderImpl.$plus$plus$eq(Map.scala:648)
at scala.collection.immutable.Map$MapBuilderImpl.$plus$plus$eq(Map.scala:595)
at scala.collection.TraversableOnce.toMap(TraversableOnce.scala:372)
at scala.collection.TraversableOnce.toMap$(TraversableOnce.scala:370)
at scala.collection.AbstractIterator.toMap(Iterator.scala:1431)
at org.clapper.classutil.ClassFinder$.classInfoMap(ClassFinder.scala:445)
at org.clapper.classutil.ClassFinder$.classInfoMap(ClassFinder.scala:453)
the following code
private lazy val classesInPath = finder.getClasses().toList
is cause to abort
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.objectweb.asm.ClassReader.(Unknown Source)
at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:249)
at org.clapper.classutil.ClassFinder.classData(ClassFinder.scala:428)
at org.clapper.classutil.ClassFinder.$anonfun$processOpenZip$2(ClassFinder.scala:386)
at scala.collection.immutable.Stream.map(Stream.scala:415)
at org.clapper.classutil.ClassFinder.processOpenZip(ClassFinder.scala:386)
at org.clapper.classutil.ClassFinder.processJar(ClassFinder.scala:340)
at org.clapper.classutil.ClassFinder.findClassesIn(ClassFinder.scala:329)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:321)
at org.clapper.classutil.ClassFinder.getClasses(ClassFinder.scala:311)
at ru.jtcc.acc.boot.ClassUtil$.classesInPath$lzycompute(ClassUtil.scala:13)
at ru.jtcc.acc.boot.ClassUtil$.classesInPath(ClassUtil.scala:13)
at ru.jtcc.acc.boot.ClassUtil$.findAllClassesByPredicate(ClassUtil.scala:18)
at ru.j
Hi, I get this error, do you know any solution?
scala 2.11.12
org.ow2.asm 6.1.1
classutil 2.11-1.3.0
what I do is just:
val finder = ClassFinder() val classes = finder.getClasses()
and then broke
An exception or error caused a run to abort. java.lang.UnsupportedOperationException at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:129) at org.objectweb.asm.ClassReader.readModule(ClassReader.java:667) at org.objectweb.asm.ClassReader.accept(ClassReader.java:503) at org.objectweb.asm.ClassReader.accept(ClassReader.java:355) at org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:261) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$classData(ClassFinder.scala:428) at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:386) at org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:386) at scala.collection.immutable.Stream.map(Stream.scala:418) at org.clapper.classutil.ClassFinder.processOpenZip(ClassFinder.scala:386) at org.clapper.classutil.ClassFinder.processJar(ClassFinder.scala:344) at org.clapper.classutil.ClassFinder.findClassesIn(ClassFinder.scala:333) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$find(ClassFinder.scala:325) at org.clapper.classutil.ClassFinder.getClasses(ClassFinder.scala:315) at com.myproject.getAllConfs(myproject.scala:46) at com.myproject.<init>(myproject.scala:51) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:1422) at org.scalatest.tools.Runner$$anonfun$31.apply(Runner.scala:1236) at org.scalatest.tools.Runner$$anonfun$31.apply(Runner.scala:1235) at scala.collection.immutable.List.map(List.scala:284) at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1235) at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011) at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010) at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1500) at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010) at org.scalatest.tools.Runner$.run(Runner.scala:850) at org.scalatest.tools.Runner.run(Runner.scala) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:131) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
I am loading from the JDK, so that's a lot of classes. Using ClassFinder, it takes 20+ seconds. I am guessing that since there is a lot of IO involved, it would be possible to parallelize it.
Is it something that would be beneficial, or you already did some experiments and showed that it wasn't?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.