news 2026/6/10 22:30:59

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/6/10 15:23:25

本地AI崛起!Ollama全家桶带你无损运行30+模型

一、Ollama 全家桶,开启本地 AI 新时代 在人工智能飞速发展的今天,大语言模型(LLMs)展现出了令人惊叹的能力,从智能聊天到内容创作,从代码生成到数据分析,其应用场景日益广泛。然而,许多强大的语言模型通常依赖云端服务,这不仅带来了隐私和数据安全方面的担忧,还可能…

作者头像 李华
网站建设 2026/6/10 3:14:17

springboot基于vue的酒店客房预订推荐系统661n2sd8

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

作者头像 李华
网站建设 2026/6/10 15:22:49

问卷设计 “慢工出粗活” VS “AI 快工出细活”!虎贲等考 AI:30 分钟拿捏专业量表

做实证研究、写毕业论文时&#xff0c;问卷设计总能成为 “拖慢进度的绊脚石”—— 人工设计要啃遍文献、精通量表逻辑、反复打磨题项&#xff0c;耗时数周仍可能因 “题项歧义”“逻辑断层”“信效度不达标” 导致数据作废&#xff1b;而普通 AI 工具生成的问卷又多是 “模板堆…

作者头像 李华
网站建设 2026/6/10 15:22:28

UMS9620 展锐平台增加一个虚拟陀螺仪

目录 一、BP 层移植说明 &#xff08;1&#xff09;、添加一个虚拟陀螺仪驱动 &#xff08;2&#xff09;、虚拟陀螺仪编译配置 &#xff08;3&#xff09;、虚拟陀螺仪info添加 二、HAL层移植说明 &#xff08;1&#xff09;、虚拟陀螺仪算法库移植 &#xff08;2&#xff0…

作者头像 李华
网站建设 2026/6/10 13:15:31

基于STM32单片机的云平台智能窗帘/晾衣架控制系统 Wifi物联网传输 蓝牙系统设计 定时开关 光线采集 雨滴感应 成品套件 DIY设计 实物+源程序+原理图+仿真+其它资料(832-7)

本人从事毕业论文设计辅导10余载&#xff0c;撰写的毕业论文超2000余篇&#xff0c;为广大的应届毕业生节省了大量的设计和撰写时间。在单片机领域&#xff0c;参与设计51系列、STM32系列、Proteus仿真、JAVA上位机、Android Studio、物联网无线通信等千余套项目&#xff0c;具…

作者头像 李华
网站建设 2026/6/10 21:25:56

CTF 新手想入门上分?抓好这几个关键点就够了

CTF新手想入门拿分&#xff1f;吃透这几点 一、先搞懂&#xff1a;CTF 到底是啥&#xff1f;网安人为啥必须练&#xff1f; 很多新手问我&#xff0c;CTF不就是个比赛吗&#xff1f;没必要非得学&#xff1f;这话可就错了&#xff01;CTF全称 Capture The Flag&#xff0c;就是…

作者头像 李华