news 2026/5/11 0:30:54

Java动态编译[源码是字符串形式]

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java动态编译[源码是字符串形式]

一、代码如下

import javax.tools.*; import java.io.IOException; import java.net.URI; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author * @version 1.0.0 * <p> * date: 2026/1/7 **/ public class Test1 { public static void main(String[] args) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); List<JavaFileObject> list = new ArrayList<>(); // 指定源代码 String code = "package org;" + "public class KK{" + " public void test(){" + " System.out.println(\"Hello World!\");" + " }" + "}"; // 添加一个源码对象 list.add(new Source("org.KK", code)); Boolean result = compiler.getTask(null, null, diagnostics, Arrays.asList("-d", "class/"), null, list).call(); System.out.println("结果:" + result); for (Diagnostic diagnostic :diagnostics.getDiagnostics()) System.out.format("出现错误,行号:[%d] 文件:%s%n", diagnostic.getLineNumber(), diagnostic.getSource().toString()); } } class Source extends SimpleJavaFileObject { /** * 源文件的代码 */ final String code; /** * 构造一个字符串源码对象 * @param name 类名,例如 org.Test * @param code 源代码字符串 */ Source(String name, String code) { super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE); this.code = code; } @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) { return code; } }

二、关键思路

1、重写SimpleJavaFileObject 类的"CharSequence getCharContent(boolean ignore)"方法。

2、在方法"CharSequence getCharContent(boolean ignore)"内部返回字符串源代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 19:31:28

26年考阿里云ACP报考通知,都去看

想转行或者从事和云计算相关的行业&#xff0c;考个ACP还是很有必要的&#xff0c;特别是对于没有经验的应届毕业生&#xff0c;持有证书无疑面试求职的加分项&#xff01;ACP涵盖云计算、大数据、大模型、云安全等多个技术方向&#xff0c;核心考核阿 里云核心产品的配置、运维…

作者头像 李华
网站建设 2026/5/10 17:49:07

springboot基于vue的大学生兼职管理系统的设计与实现_dz2fko41

目录 系统概述技术架构核心功能模块创新与优化应用价值 开发技术 核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff0…

作者头像 李华
网站建设 2026/5/10 6:10:02

springboot基于vue的火车票订票管理系统_xbfej00y

目录系统概述核心功能模块技术架构亮点应用场景与优势开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系…

作者头像 李华
网站建设 2026/5/10 1:38:18

基于Spring boot+Vue的大学生心理咨询平台_44ik50ky

目录基于Spring BootVue的大学生心理咨询平台开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Sprin…

作者头像 李华
网站建设 2026/5/9 18:03:08

大模型应用技术之 Agent框架 AutoGen

1. AutoGen 原理与介绍 1.1 什么是 AutoGen AutoGen 是由微软&#xff08;Microsoft&#xff09;开发的开源多智能体对话框架。它允许开发者通过定义多个可对话的 Agent&#xff08;Conversable Agents&#xff09;&#xff0c;让它们通过自动对话来协作解决任务。AutoGen 的核…

作者头像 李华