java class文件 代码_java_基础——用代码编译.java文件+加载class文件

java_基础——用代码编译.java文件+加载class文件

java_基础——用代码编译.java文件+加载class文件

【简单编译的流程】

bf4b049d2acea46e159dd4bc2739545f.png

package com.zjm.www.test;

import java.io.IOException;

import javax.tools.JavaCompiler;

import javax.tools.JavaCompiler.CompilationTask;

import javax.tools.StandardJavaFileManager;

import javax.tools.ToolProvider;

public class Test {

public static void main(String[] args) {

// 获取.java文件路径

String fileName = System.getProperty("user.dir")+

"\\src\\com\\zjm\\www\\test\\TankTimeProxy.java";

/**

* ToolProvider类:该类是为查找工具提供者提供方法,例如,编译器的提供者。)

* getSystemJavaCompiler:获取此平台提供的 Java? 编程语言编译器。

*/

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

/**

* getStandardFileManager: 为此工具获取一个标准文件管理器实现的新实例。

* 参数:

* diagnosticListener - 用于非致命诊断信息的诊断侦听器;如果为 null,则使用编译器的默认方法来报告诊断信息

* locale - 格式化诊断信息时要应用的语言环境;如果为 null,则使用默认语言环境。

* charset - 用于解码字节的字符集;如果为 null,则使用平台默认的字符集

* 返回:

* 标准文件管理器

*

*/

StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null,null,null);

/**

* getJavaFileObjects:获取表示给定文件的文件对象。

* 参数:

* files - 文件数组

* 返回:

* 文件对象列表

*/

Iterable units = fileMgr.getJavaFileObjects(fileName);

/**

* getTask:使用给定组件和参数创建编译任务的 future

* 参数:

* out - 用于来自编译器的其他输出的 Writer;如果为 null,则使用 System.err

* fileManager - 文件管理器;如果为 null,则使用编译器的标准文件管理器

* diagnosticListener - 诊断侦听器;如果为 null,则使用编译器的默认方法报告诊断信息

* options - 编译器选项;null 表示没有选项

* classes - 类名称(用于注释处理),null 表示没有类名称

* compilationUnits - 要编译的编译单元;null 表示没有编译单元

* 返回:

* 表示编译的对象

*/

CompilationTask t = compiler.getTask(null,null,null,null,null,units);//编译任务

// 开始编译

t.call();

// 关闭“java编译器”

try {

fileMgr.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

【其中的TankTimeProxy类】

package com.zjm.www.test;

public class TankTimeProxy {

public TankTimeProxy(){

System.out.println("hello TankTimeProxy");

}

}

注:默认编译后的class文件与该java文件在同一个文件夹下。

【加载class文件】

package com.zjm.www.test;

import java.net.URL;

import java.net.URLClassLoader;

public class Test2 {

public static void main(String[] args) throws Exception {

//1 去那个路劲下找这个类,默认是bin下面的classpath,因为自动编译后的class文件默认放在那里

URL[] urls = new URL[] {new URL("file:/"+System.getProperty("user.dir")+"/src/")};

//2 去urls里面去找class

URLClassLoader ul = new URLClassLoader(urls);

//3 load哪个类,写全类名。

Class c = ul.loadClass("com.zjm.www.test.TankTimeProxy");

// 打印:hello TankTimeProxy 即代表成功

Object o = c.newInstance();

}

}

java_基础——用代码编译.java文件+加载class文件相关教程

Python基础教程之Python 字典(Dictionary)

Python基础教程之Python 字典(Dictionary) 目录 Python Dictionary(字典) 与列表区别(list) 注意事项 创建字典 简单操作 内置函数 注意 Python Dictionary(字典) 字典(dictionary)是Python中另一个非常有用的内置数据类型。 与列表区别(list) 列表

java第十六天

java第十六天 复习 面向对象的三大特性: 封装:private get/set 继承:extends 抽取共性 实现代码复用 多态:1.存在继承关系 2.重写 3.父类引用指向子类 实现形式: 普通父类 抽象类 接口 java常用接口: Comparable public interface ComparableT { public

Java中的不可变集合与使用场景

Java中的不可变集合与使用场景 Jdk中的Collections.unmodifiable与使用 场景:你去购物时被人偷偷往你购物车里丢了东西 解决方法:不可变集合:Collections.unmodifiableXXX 需求: 我们的需求是只有在创建对象(学生)时,才能设定ta的课程,所以我们在设计类

Flink代码及ui界面应用

Flink代码及ui界面应用 文章目录 Flink和Spark各自优劣 底层机制 Spark Flink 运用 支持语言 Flink运行代码 maven配置 source部分transform模块 sink模块 执行 1、命令行执行 2、Flink web ui配置 job执行日志 task manager日志 Flink和Spark各自优劣 底层机

Udesk WebIM插件客户身份认证(一、Java签名篇)

Udesk WebIM插件客户身份认证(一、Java签名篇) 作者:张振琦 网站登录用户通过web im进行聊天对话时,可以将客户信息通过链接转给Udesk,这样客服在与客户对话时,就可以直接查看客户信息。通过客户信息辅助组件也可以进一步了解此客户的订单等其他信息。

Java多线程高并发之ThreadPool

Java多线程高并发之ThreadPool 前边我们讲述了:Java多线程高并发之基础概念篇、Java多线程高并发之详解JUC同步工具 分别从以下几个方面了解线程的概念及如何使用: 1、线程是什么?为什么需要多线程?Java如何实现多线程? 2、Java对多线程的基础操作:线程

Java时区时间转换

Java时区时间转换 开发中,我们可能需要将时区类的时间转换成我们能够理解的且表示正常的date类型(这些场景在数据库时间字段比较常见,如mongo和es,他们储存的时候时间是0时区表示,而我们处在东八区,时间差为8小时),实例如下: String time = 2020-09-27T03:57:3

[Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治

[Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归] 【问题描述】[中等] 【解答思路】 copyOfRange class Solution { public TreeNode constructFromPrePost(int[] pre, int[] post) { if(pre==null || pre.length==0) { return null; } r

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 记一个Popup踩坑记录

看名字就知道,它是一个弹出控件,顾名思义,我们可以用它来实现类似Combobox那种,点击后弹出下面选项列表的操作。记录:需求:有一个文本框 ,鼠标点击后,弹出一个Popup。我编写了以下xa…

通过电话号码获取姓名 (+86或者飞信)

2019独角兽企业重金招聘Python工程师标准>>> /** * 通过电话号码获取姓名 (86或者飞信) */ /* public String getContactName(String phoneNum) { String contactName "";// 处理电话号码格式问题 if (phoneNum.length() > 11) {ContentResolver cr …

春节特惠活动┃强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步...

▲数据汪特别推荐点击上图进入玩酷屋在马斯的学生时代的记忆中,数学定义定理、化学方程式、物理公式……这些科学知识点总是冷冰冰的,枯燥、深奥也总是科学的代名词。如今教育局明确规定科学课是小学必修课,孩子也逐步接受科学知识的熏陶。但…

删除未使用的引用 | Visual Studio 2019(16.10)新功能试用

当解决方案很小时,我们清楚地知道解决方案中使用了哪些项目引用和NuGet包,要想清理它们很容易。而对于大型的解决方案,有哪些包在使用中,开发人员很难找到它们,或者找起来可能很耗时。Visual Studio 2019(16.10)添加了…

女生转行IT与男生有什么不一样?

全世界只有3.14 % 的人关注了数据与算法之美在我的后台咨询者当中,女生向我咨询最多的问题就是:女生转行IT有什么困难?是不是很多IT企业都不要女生啊?女生的逻辑不如男生,是不是学不好编程?等等。1以上的所…

Blazor 基础入门

Blazor 基础知识IntroBlazor 是微软在 .NET 里推出的一个 WEB 客户端 UI 交互的框架,使用 Blazor 你可以代替 JavaScript 来实现自己的页面交互逻辑,可以很大程度上进行 C# 代码的复用,Blazor 对于 .NET 开发人员来说是一个不错的选择。托管模…

java 列表展开方式_android列表控件实现展开、收缩功能

最近在做一个Rss阅读器,我看了一看别人做的阅读器中的lisView可以伸缩,展开,我就在网上搜索了一下。果然让我找到,下面就我找到的一个小例子,给大家分享一下。ActivityMain .javapackage com.android;import android.a…

每个人都应该学习编程,因为它会教你如何思考

▲数据汪特别推荐点击上图进入玩酷屋扎克伯格11岁开始学习编程,创办Facebook;比尔盖茨13岁学习编程,创办微软……乔布斯说:“每一个人都应该学习电脑编程,因为它会教你如何思考。"现在在北京上海,顶级…

.NET Core HttpClient请求异常思考

【导读】上一篇我们讨论了针对项目上异常信息的具体分析而给出对应解决方案,本篇仅是我个人对相关异常信息了解过后的进一步学习和思考,希望对后续遇到此异常信息的同学们给予思路扩展下面我们结合如下两个异常信息进行大致排查分析,到底什么…

程序员编程10大原则,请牢牢记住!

全世界只有3.14 % 的人关注了数据与算法之美1、想清楚,再动手写代码刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌!2、不交流,就会头破血流不爱说话和沟通,需求都理…

技术分享|基于SQL Server Change Tracking实现宽表的增量更新

源宝导读:在企业建设信息化的过程中,客户通常会使用一些数仓工具来构建数据资产,随着用户的要求越来越高,传统的ETL技术已经无法满足客户的实时性诉求,本文将分享“天际-数据平台”如何基于SQL Server来实现数仓数据的…

C# 文件操作详解(一)---------File类

C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 图1:类图 下面通过实例来看下每个…

小时“数感”好,长大才能数学好

▲数据汪特别推荐点击上图进入玩酷屋很多妈妈都无比担心孩子的数学:孩子会不会像自己一样重蹈覆辙呢?在很多人眼里,数学是一堆怎么也弄不明白的公式、符号,而且是怎么努力怎么用功死活就是学不好的一门学科。可是,同样…

java并行流 阻塞主线程_多线程入门案例与java8的并行流

java8 实例请移步https://www.cnblogs.com/ngLee/p/14021859.html进程与线程进程是所有线程的集合,每一个线程是进程中的一条执行路径。多线程的创建方式,继承Thread\实现Runable/*** 第一种创建线程的方式,继承Thread*/public class MultiTh…

BlazorCharts 原生图表库的建设历程

点击蓝字关注我们背景目前 Blazor 中可用的图表组件库主要有以下几个:ant-design-blazor/ant-design-charts-blazor-基于G2Plot mariusmuntean/ChartJs.Blazor- 基于ChartJs blazor-cn/Blazor.ECharts- 基于EChartsant-design-charts-blazor是我主导完成的&#xff…

别光顾着背单词了,每天花18分钟做这件事,英语水平暴增!

全世界只有3.14 % 的人关注了数据与算法之美在知乎上看过一个问题:在当今社会,英语还重要吗?点赞第一的回答是——英语可以差,但你的口语一定要好!你记住了1万个单词、将语法书倒背如流、英语成绩名列前茅、英语证书一…

WPF 路径动画PathAnimations的使用

在wpf中让一个控件按照一定的路径运行的动画。。叫做路径动画&#xff0c;这个示例演示了让一个rectangle按照一个s形曲线反复运行的动画。效果&#xff1a;只有一个文件&#xff1a;全部代码如下 &#xff1a;<Window x:Class"wpfcore.MainWindow"xmlns"htt…

STEM科学实验:测试了2000+儿童后证明它秒杀了90%的玩具!

▲数据汪特别推荐点击上图进入玩酷屋除了ipad和那些普通的玩具&#xff0c;我们还能给孩子玩儿些什么&#xff1f;当然是“玩”科学。因为创造力是他们这个年纪&#xff0c;最需要培养的东西。真正的科学启蒙不是将科学知识生硬的灌输给孩子&#xff0c;而是要让孩子在探索中能…

人工智能时代,学好数学有什么用?

随着科技的快速发展&#xff0c;人工智能的热度越来越高。而数学知识蕴含着处理智能问题的基本思想与方法&#xff0c;是理解复杂算法的必备要素。在机器学习工作流程中&#xff0c;数学与代码高度交织在一起&#xff0c;代码通常可以根据数学直观地构建&#xff0c;甚至会共享…

使用CLI模板 | Visual Studio 2019(16.10)新功能试用

Visual Studio很早以前就有模板了&#xff0c;.NET Core命令行界面&#xff08;CLI&#xff09;也能够安装模板并通过dotnet new命令使用它们。然而&#xff0c;但是并没有什么简单的方法可以在Visual Studio中直接使用这些模板。在Visual Studio 2019(16.10)中&#xff0c;启用…