forked from JavaTX/JavaCompilerCore
add -classpath to ConsoleInterface. Fix bug
This commit is contained in:
parent
d1138540de
commit
f3d6fcb417
@ -814,7 +814,7 @@ public class BytecodeGenMethod implements StatementVisitor {
|
|||||||
// mDesc = helper.generateBCForFunN(methCallType,typesOfParams);
|
// mDesc = helper.generateBCForFunN(methCallType,typesOfParams);
|
||||||
}else {
|
}else {
|
||||||
try {
|
try {
|
||||||
cLoader2 = new URLClassLoader(new URL[] {new URL("file://"+path)}, classLoader);
|
cLoader2 = new URLClassLoader(new URL[] {new URL("file://" + path + "/")}, classLoader);
|
||||||
java.lang.reflect.Method[] methods = cLoader2.loadClass(clazz).getMethods();
|
java.lang.reflect.Method[] methods = cLoader2.loadClass(clazz).getMethods();
|
||||||
System.out.println("Methods of " + receiverName + " ");
|
System.out.println("Methods of " + receiverName + " ");
|
||||||
for(int i = 0; i<methods.length; i++) {
|
for(int i = 0; i<methods.length; i++) {
|
||||||
|
@ -20,7 +20,7 @@ public class ConsoleInterface {
|
|||||||
outputPath = it.next();
|
outputPath = it.next();
|
||||||
}else if(arg.startsWith("-d")) {
|
}else if(arg.startsWith("-d")) {
|
||||||
outputPath = arg.substring(2);
|
outputPath = arg.substring(2);
|
||||||
}else if(arg.equals("-cp")){
|
}else if(arg.equals("-cp") || arg.equals("-classpath")){
|
||||||
String[] cps = it.next().split(":");
|
String[] cps = it.next().split(":");
|
||||||
for(String cp : cps){
|
for(String cp : cps){
|
||||||
classpath.add(new URL("file://"+cp));
|
classpath.add(new URL("file://"+cp));
|
||||||
|
@ -791,24 +791,25 @@ public class JavaTXCompiler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param path - can be null, then class file output is in the same directory as the parsed source files
|
* @param outputPath - can be null, then class file output is in the same directory as the parsed source files
|
||||||
* @param typeinferenceResult
|
* @param typeinferenceResult
|
||||||
* @param simplifyResultsForAllSourceFiles
|
* @param simplifyResultsForAllSourceFiles
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public void generateBytecode(String path, List<ResultSet> typeinferenceResult,
|
public void generateBytecode(String outputPath, List<ResultSet> typeinferenceResult,
|
||||||
List<GenericGenratorResultForSourceFile> simplifyResultsForAllSourceFiles) throws IOException {
|
List<GenericGenratorResultForSourceFile> simplifyResultsForAllSourceFiles) throws IOException {
|
||||||
for (File f : sourceFiles.keySet()) {
|
for (File f : sourceFiles.keySet()) {
|
||||||
HashMap<JavaClassName, byte[]> classFiles = new HashMap<>();
|
HashMap<JavaClassName, byte[]> classFiles = new HashMap<>();
|
||||||
SourceFile sf = sourceFiles.get(f);
|
SourceFile sf = sourceFiles.get(f);
|
||||||
|
String path;
|
||||||
|
if(outputPath == null){
|
||||||
|
path = f.getParent(); //Set path to path of the parsed .jav file
|
||||||
|
}else{
|
||||||
|
path = outputPath + sf.getPkgName().replace(".","/"); //add package path to root path
|
||||||
|
}
|
||||||
BytecodeGen bytecodeGen = new BytecodeGen(classFiles, typeinferenceResult, simplifyResultsForAllSourceFiles,
|
BytecodeGen bytecodeGen = new BytecodeGen(classFiles, typeinferenceResult, simplifyResultsForAllSourceFiles,
|
||||||
sf, path, classLoader);
|
sf, path, classLoader);
|
||||||
bytecodeGen.visit(sf);
|
bytecodeGen.visit(sf);
|
||||||
if(path == null){
|
|
||||||
path = f.getParent(); //Set path to path of the parsed .jav file
|
|
||||||
}else{
|
|
||||||
path += sf.getPkgName().replace(".","/"); //add package path to root path
|
|
||||||
}
|
|
||||||
writeClassFile(bytecodeGen.getClassFiles(), path);
|
writeClassFile(bytecodeGen.getClassFiles(), path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,11 +29,24 @@ public class LoadDefaultPackageClassesTest extends TestCase {
|
|||||||
|
|
||||||
public void testLoadGenClass() throws IOException, ClassNotFoundException {
|
public void testLoadGenClass() throws IOException, ClassNotFoundException {
|
||||||
CompilationEnvironment.loadDefaultPackageClasses(new File( rootDirectory + "Test.jav"), ClassLoader.getSystemClassLoader());
|
CompilationEnvironment.loadDefaultPackageClasses(new File( rootDirectory + "Test.jav"), ClassLoader.getSystemClassLoader());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testURLClassLoader() throws IOException, ClassNotFoundException {
|
public void testURLClassLoader() throws IOException, ClassNotFoundException {
|
||||||
URLClassLoader cl = new URLClassLoader(new URL[]{new URL("file://"+rootDirectory)}, ClassLoader.getSystemClassLoader());
|
URLClassLoader cl = new URLClassLoader(new URL[]{new URL("file://"+rootDirectory)}, ClassLoader.getSystemClassLoader());
|
||||||
cl.loadClass("Gen");
|
cl.loadClass("Gen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testE2E() throws IOException, ClassNotFoundException {
|
||||||
|
JavaTXCompiler compiler = new JavaTXCompiler(new File(rootDirectory+"OL.jav"));
|
||||||
|
compiler.typeInference();
|
||||||
|
compiler.generateBytecode();
|
||||||
|
File f = new File(rootDirectory + "OL.class");
|
||||||
|
assertTrue(f.exists());
|
||||||
|
|
||||||
|
compiler = new JavaTXCompiler(new File(rootDirectory+"OLMain.jav"));
|
||||||
|
compiler.typeInference();
|
||||||
|
compiler.generateBytecode();
|
||||||
|
f = new File(rootDirectory + "OLMain.class");
|
||||||
|
assertTrue(f.exists());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user