1 19 20 package soot; 21 import java.io.*; 22 23 26 public class JavaClassProvider implements ClassProvider 27 { 28 30 public ClassSource find( String className ) { 31 32 if (soot.javaToJimple.InitialResolver.v().hasASTForSootName(className)){ 33 soot.javaToJimple.InitialResolver.v().setASTForSootName(className); 34 return new JavaClassSource(className); 35 } 36 else { 37 String javaClassName = SourceLocator.v().getSourceForClass(className); 38 String fileName = javaClassName.replace('.', '/') + ".java"; 39 SourceLocator.FoundFile file = 40 SourceLocator.v().lookupInClassPath(fileName); 41 if( file == null ) return null; 42 if( file.file == null ) { 43 throw new RuntimeException ( "Class "+className+" was found in a .jar, but Polyglot doesn't support reading source files out of a .jar" ); 44 } 45 return new JavaClassSource(className, file.file); 46 } 47 } 48 } 49 50 | Popular Tags |