mirror of https://github.com/sbt/sbt.git
Fix class file resolution issue
git-svn-id: https://simple-build-tool.googlecode.com/svn/trunk@893 d89573ee-9141-11dd-94d4-bdf5e562f29c
This commit is contained in:
parent
b6da7c4e5c
commit
dd32ac75da
|
|
@ -46,17 +46,16 @@ object Analyze
|
|||
for(classFile <- classFiles if isTopLevel(classFile);
|
||||
method <- classFile.methods; if method.isMain)
|
||||
analysis.foundApplication(source, classFile.className)
|
||||
def processDependency(tpeSlashed: String)
|
||||
def processDependency(tpe: String)
|
||||
{
|
||||
val tpe = tpeSlashed.replace('/','.')
|
||||
Control.trapAndLog(log)
|
||||
{
|
||||
val clazz = Class.forName(tpe, false, loader)
|
||||
val file = FileUtilities.classLocationFile(clazz)
|
||||
if(file.isDirectory)
|
||||
{
|
||||
val resolved = resolveClassFile(file, tpeSlashed)
|
||||
require(resolved.exists)
|
||||
val resolved = resolveClassFile(file, tpe)
|
||||
require(resolved.exists, "Resolved class file " + resolved + " did not exist")
|
||||
val resolvedPath = Path.fromFile(resolved)
|
||||
if(Path.fromFile(file) == outputDirectory)
|
||||
{
|
||||
|
|
@ -81,12 +80,13 @@ object Analyze
|
|||
|
||||
compile orElse Control.convertErrorMessage(log)(analyze()).left.toOption
|
||||
}
|
||||
private def resolveClassFile(file: File, className: String): File = (file /: (className + ".class").split("""\\"""))(new File(_, _))
|
||||
private def resolveClassFile(file: File, className: String): File = (file /: (className.replace('.','/') + ".class").split("/"))(new File(_, _))
|
||||
private def guessSourcePath(sources: scala.collection.Set[Path], roots: Iterable[Path], classFile: ClassFile, log: Logger) =
|
||||
{
|
||||
val classNameParts = classFile.className.split("""\.""")
|
||||
val lastIndex = classNameParts.length - 1
|
||||
val (pkg, simpleClassName) = (classNameParts.take(lastIndex), classNameParts(lastIndex))
|
||||
val pkg = classNameParts.take(lastIndex)
|
||||
val simpleClassName = classNameParts(lastIndex)
|
||||
val sourceFileName = classFile.sourceFile.getOrElse(simpleClassName.takeWhile(_ != '$').mkString("", "", ".java"))
|
||||
val relativeSourceFile = (pkg ++ (sourceFileName :: Nil)).mkString("/")
|
||||
val candidates = roots.map(root => Path.fromString(root, relativeSourceFile)).filter(sources.contains).toList
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ object Parser
|
|||
constants.flatMap { constant =>
|
||||
constant.tag match
|
||||
{
|
||||
case ConstantClass => toUTF8(constant.nameIndex) :: Nil
|
||||
case ConstantClass => slashesToDots(toUTF8(constant.nameIndex)) :: Nil
|
||||
case _ => Nil
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue