news 2026/4/23 14:56:01

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/4/22 17:24:13

期刊投稿 “屡投屡拒”?虎贲等考 AI:破解核心期刊 “录用密码”,投稿命中率翻倍

在学术圈&#xff0c;期刊论文发表是科研工作者、高校教师与研究生的 “硬通货”。但多数人都深陷 “投稿 - 拒稿 - 修改 - 再投稿” 的循环&#xff1a;选题踩不准期刊偏好、文献综述缺乏深度、格式不符初审被刷、数据支撑薄弱论证乏力…… 普通 AI 工具仅能生成基础文本&…

作者头像 李华
网站建设 2026/4/17 21:07:06

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

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

作者头像 李华
网站建设 2026/4/23 12:48:26

在Windows上编译、安装Rust

你想知道在Windows系统上安装Rust编程语言的具体方法&#xff0c;我会为你提供官方推荐、新手友好的完整步骤&#xff0c;包括前置依赖、安装操作和验证方法&#xff0c;确保你能顺利完成安装。 一、前置准备&#xff08;关键&#xff01;避免后续编译报错&#xff09; Rust在W…

作者头像 李华
网站建设 2026/4/22 22:30:56

2026年六大GEO优化公司能力测评:技术纵深决定AI搜索霸权

2026年&#xff0c;生成式AI已占据用户决策链的核心节点。QuestMobile数据显示&#xff0c;中国AI搜索用户规模突破4.2亿&#xff0c;用户日均通过DeepSeek、文心一言、Kimi等平台发起超过2.8亿次商业类提问。当"新能源车怎么选""智能家居品牌推荐"这类问题…

作者头像 李华