diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala b/src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala index 716358a653..d0a0b17494 100644 --- a/src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala +++ b/src/compiler/scala/tools/nsc/io/ClassAndJarInfo.scala @@ -6,7 +6,7 @@ package scala.tools.nsc package io -import java.net.URL +import java.net.{ URL, URLClassLoader } import java.io.IOException import collection.JavaConverters._ @@ -14,18 +14,20 @@ import collection.JavaConverters._ * a given Class object and similar common tasks. */ class ClassAndJarInfo[T: ClassManifest] { - val man = classManifest[T] - def clazz = man.erasure + val man = classManifest[T] + def clazz = man.erasure + def internalName = clazz.getName.replace('.', '/') + + def resourceURL = new URLClassLoader(Array[URL]()) getResource internalName + ".class" def baseOfPath(path: String) = path indexOf '!' match { - case -1 => path stripSuffix internalClassName + case -1 => path stripSuffix internalName + ".class" case idx => path take idx } + def simpleClassName = clazz.getName split """[$.]""" last def classUrl = clazz getResource simpleClassName + ".class" def codeSource = protectionDomain.getCodeSource() - def internalClassName = internalName + ".class" - def internalName = clazz.getName.replace('.', '/') def jarManifest = ( try new JManifest(jarManifestUrl.openStream()) catch { case _: IOException => new JManifest() } @@ -39,5 +41,4 @@ class ClassAndJarInfo[T: ClassManifest] { def rootFromLocation = Path(locationUrl.toURI.getPath()) def rootFromResource = Path(baseOfPath(classUrl.getPath) stripPrefix "file:") def rootPossibles = Iterator(rootFromResource, rootFromLocation) - def simpleClassName = clazz.getName split """[$.]""" last } |