Package org.aoju.bus.core.compiler
Class JavaClassFileManager
java.lang.Object
javax.tools.ForwardingJavaFileManager<JavaFileManager>
org.aoju.bus.core.compiler.JavaClassFileManager
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable,JavaFileManager,OptionChecker
Java 字节码文件对象管理器
正常我们使用javac命令编译源码时会将class文件写入到磁盘中,但在运行时动态编译类不适合保存在磁盘中
我们采取此对象来管理运行时动态编译类生成的字节码
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested classes/interfaces inherited from interface javax.tools.JavaFileManager
JavaFileManager.Location -
Field Summary
Fields inherited from class javax.tools.ForwardingJavaFileManager
fileManager -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedJavaClassFileManager(ClassLoader parent, JavaFileManager fileManager) 构造 -
Method Summary
Modifier and TypeMethodDescriptiongetClassLoader(JavaFileManager.Location location) 获得动态编译生成的类的类加载器getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) 获得Java字节码文件对象 编译器编译源码时会将Java源码对象编译转为Java字节码对象Methods inherited from class javax.tools.ForwardingJavaFileManager
close, contains, flush, getFileForInput, getFileForOutput, getFileForOutputForOriginatingFiles, getJavaFileForInput, getJavaFileForOutputForOriginatingFiles, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, isSameFile, isSupportedOption, list, listLocationsForModules
-
Constructor Details
-
JavaClassFileManager
构造- Parameters:
parent- 父类加载器fileManager- 字节码文件管理器
-
-
Method Details
-
getClassLoader
获得动态编译生成的类的类加载器- Specified by:
getClassLoaderin interfaceJavaFileManager- Overrides:
getClassLoaderin classForwardingJavaFileManager<JavaFileManager>- Parameters:
location- 源码位置- Returns:
- 动态编译生成的类的类加载器
-
getJavaFileForOutput
public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) 获得Java字节码文件对象 编译器编译源码时会将Java源码对象编译转为Java字节码对象- Specified by:
getJavaFileForOutputin interfaceJavaFileManager- Overrides:
getJavaFileForOutputin classForwardingJavaFileManager<JavaFileManager>- Parameters:
location- 源码位置className- 类名kind- 文件类型sibling- Java源码对象- Returns:
- Java字节码文件对象
-