.class工具类测试

master
Qin Dong Ming 2024-09-04 10:18:22 +08:00
parent e4fcf5fadd
commit 4dbe72f50c
3 changed files with 13 additions and 11 deletions

View File

@ -1,4 +1,6 @@
package com.itranswarp.compiler;
package com.muyu.javacomplier;
import com.muyu.dynamicLoad.DynamicLoader;
import java.io.IOException;
import java.util.Arrays;
@ -38,7 +40,7 @@ public class JavaStringCompiler {
* If compile error.
*/
public Map<String, byte[]> compile(String fileName, String source) throws IOException {
try (MemoryJavaFileManager manager = new MemoryJavaFileManager(stdManager)) {
try (com.itranswarp.compiler.MemoryJavaFileManager manager = new com.itranswarp.compiler.MemoryJavaFileManager(stdManager)) {
JavaFileObject javaFileObject = manager.makeStringSource(fileName, source);
CompilationTask task = compiler.getTask(null, manager, null, null, null, Arrays.asList(javaFileObject));
Boolean result = task.call();
@ -63,7 +65,7 @@ public class JavaStringCompiler {
* If load error.
*/
public Class<?> loadClass(String name, Map<String, byte[]> classBytes) throws ClassNotFoundException, IOException {
try (MemoryClassLoader classLoader = new MemoryClassLoader(classBytes)) {
try (DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader(classBytes)) {
return classLoader.loadClass(name);
}
}

View File

@ -21,12 +21,12 @@ import javax.tools.SimpleJavaFileObject;
*
* @author michael
*/
class MemoryJavaFileManager extends ForwardingJavaFileManager<JavaFileManager> {
public class MemoryJavaFileManager extends ForwardingJavaFileManager<JavaFileManager> {
// compiled classes in bytes:
final Map<String, byte[]> classBytes = new HashMap<String, byte[]>();
MemoryJavaFileManager(JavaFileManager fileManager) {
public MemoryJavaFileManager(JavaFileManager fileManager) {
super(fileManager);
}
@ -53,7 +53,7 @@ class MemoryJavaFileManager extends ForwardingJavaFileManager<JavaFileManager> {
}
}
JavaFileObject makeStringSource(String name, String code) {
public JavaFileObject makeStringSource(String name, String code) {
return new MemoryInputJavaFileObject(name, code);
}