在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:OpenHFT/Java-Runtime-Compiler开源软件地址:https://github.com/OpenHFT/Java-Runtime-Compiler开源编程语言:Java 100.0%开源软件介绍:Chronicle Runtime CompilerOn Maven CentralYou can include in your project with <dependency>
<groupId>net.openhft</groupId>
<artifactId>compiler</artifactId>
<version><!-- The latest version (see above) --></version>
</dependency> Simple exampleYou need a CachedCompiler and access to your JDK’s tools.jar. // dynamically you can call
String className = "mypackage.MyClass";
String javaCode = "package mypackage;\n" +
"public class MyClass implements Runnable {\n" +
" public void run() {\n" +
" System.out.println(\"Hello World\");\n" +
" }\n" +
"}\n";
Class aClass = CompilerUtils.CACHED_COMPILER.loadFromJava(className, javaCode);
Runnable runner = (Runnable) aClass.newInstance();
runner.run(); I suggest making your class implement a KnownInterface of your choice as this will allow you to call/manipulate instances of you generated class. Another more hacky way is to use this to override a class, provided it hasn’t been loaded already. This means you can redefine an existing class and provide the methods and fields used match, you have compiler redefine a class and code already compiled to use the class will still work. Using the CachedCompiler.In this example, you can configure the compiler to write the files to a specific directory when you are in debug mode. private static final CachedCompiler JCC = CompilerUtils.DEBUGGING ?
new CachedCompiler(new File(parent, "src/test/java"), new File(parent, "target/compiled")) :
CompilerUtils.CACHED_COMPILER; By selecting the src directory to match where your IDE looks for those files, it will allow your debugger to set into the code you have generated at runtime. Note: you may need to delete these files if you want to regenerate them. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论