trung / InMemoryJavaCompiler

Utility class to compile java source code in memory
Apache License 2.0
266 stars 81 forks source link

NullPointerException #24

Open Perzan opened 5 years ago

Perzan commented 5 years ago
            `System.setProperty("java.home", "C:\\Program Files\\Java\\jdk-11.0.1");
    StringBuilder sourceCode = new StringBuilder();
    sourceCode.append("package me.Perzan.compileString;\n");
    sourceCode.append("class HelloClass {\n");
    sourceCode.append("   public static void hello() { System.out.println(\"hello\"); }");
    sourceCode.append("}");

    InMemoryJavaCompiler compiler = InMemoryJavaCompiler.newInstance();

    compiler.addSource("HelloClass", sourceCode.toString());

    Map<String, Class<?>> classMap = compiler.compileAll();

    Class<?> helloClass = classMap.get("HelloClass");
    Method m = helloClass.getMethod("hello");

    m.invoke(null);`

So at the line with 'Map<String, Class<?>> classMap = compiler.compileAll();' I get NullPointerException. I even set the property for JDK at the beginning. I'm not sure why this is happening, for my version is pretty much the same as your example...

(Also the '`' things are not part of it, I was just trying to insert the code)

Also here is the stack trace:

Exception in thread "main" java.lang.NullPointerException at org.mdkt.compiler.InMemoryJavaCompiler.compileAll(InMemoryJavaCompiler.java:80) at me.Perzan.compileString.CompileTest.main(CompileTest.java:26)

fgMAI commented 5 years ago

I can confirm nullpointer exceptions. Only one time it worked, but i cannot Recall the difference from code.

fgMAI commented 5 years ago

For me the Problem is that i generate unique filenames for the .java File,from input Code. With fixed names it does work. Check the names calling.. do it like example, object names are not arbitrary - it has to match!

calebneuf commented 3 years ago

getting this issue