日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java class文件 代码_java_基础——用代码编译.java文件+加载class文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java_基礎(chǔ)——用代碼編譯.java文件+加載class文件

java_基礎(chǔ)——用代碼編譯.java文件+加載class文件

【簡單編譯的流程】

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:獲取此平臺(tái)提供的 Java? 編程語言編譯器。

*/

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

/**

* getStandardFileManager: 為此工具獲取一個(gè)標(biāo)準(zhǔn)文件管理器實(shí)現(xiàn)的新實(shí)例。

* 參數(shù):

* diagnosticListener - 用于非致命診斷信息的診斷偵聽器;如果為 null,則使用編譯器的默認(rèn)方法來報(bào)告診斷信息

* locale - 格式化診斷信息時(shí)要應(yīng)用的語言環(huán)境;如果為 null,則使用默認(rèn)語言環(huán)境。

* charset - 用于解碼字節(jié)的字符集;如果為 null,則使用平臺(tái)默認(rèn)的字符集

* 返回:

* 標(biāo)準(zhǔn)文件管理器

*

*/

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

/**

* getJavaFileObjects:獲取表示給定文件的文件對(duì)象。

* 參數(shù):

* files - 文件數(shù)組

* 返回:

* 文件對(duì)象列表

*/

Iterable units = fileMgr.getJavaFileObjects(fileName);

/**

* getTask:使用給定組件和參數(shù)創(chuàng)建編譯任務(wù)的 future

* 參數(shù):

* out - 用于來自編譯器的其他輸出的 Writer;如果為 null,則使用 System.err

* fileManager - 文件管理器;如果為 null,則使用編譯器的標(biāo)準(zhǔn)文件管理器

* diagnosticListener - 診斷偵聽器;如果為 null,則使用編譯器的默認(rèn)方法報(bào)告診斷信息

* options - 編譯器選項(xiàng);null 表示沒有選項(xiàng)

* classes - 類名稱(用于注釋處理),null 表示沒有類名稱

* compilationUnits - 要編譯的編譯單元;null 表示沒有編譯單元

* 返回:

* 表示編譯的對(duì)象

*/

CompilationTask t = compiler.getTask(null,null,null,null,null,units);//編譯任務(wù)

// 開始編譯

t.call();

// 關(guān)閉“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");

}

}

注:默認(rèn)編譯后的class文件與該java文件在同一個(gè)文件夾下。

【加載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 去那個(gè)路勁下找這個(gè)類,默認(rèn)是bin下面的classpath,因?yàn)樽詣?dòng)編譯后的class文件默認(rèn)放在那里

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

//2 去urls里面去找class

URLClassLoader ul = new URLClassLoader(urls);

//3 load哪個(gè)類,寫全類名。

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

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

Object o = c.newInstance();

}

}

java_基礎(chǔ)——用代碼編譯.java文件+加載class文件相關(guān)教程

Python基礎(chǔ)教程之Python 字典(Dictionary)

Python基礎(chǔ)教程之Python 字典(Dictionary) 目錄 Python Dictionary(字典) 與列表區(qū)別(list) 注意事項(xiàng) 創(chuàng)建字典 簡單操作 內(nèi)置函數(shù) 注意 Python Dictionary(字典) 字典(dictionary)是Python中另一個(gè)非常有用的內(nèi)置數(shù)據(jù)類型。 與列表區(qū)別(list) 列表

java第十六天

java第十六天 復(fù)習(xí) 面向?qū)ο蟮娜筇匦?#xff1a; 封裝:private get/set 繼承:extends 抽取共性 實(shí)現(xiàn)代碼復(fù)用 多態(tài):1.存在繼承關(guān)系 2.重寫 3.父類引用指向子類 實(shí)現(xiàn)形式: 普通父類 抽象類 接口 java常用接口: Comparable public interface ComparableT { public

Java中的不可變集合與使用場景

Java中的不可變集合與使用場景 Jdk中的Collections.unmodifiable與使用 場景:你去購物時(shí)被人偷偷往你購物車?yán)飦G了東西 解決方法:不可變集合:Collections.unmodifiableXXX 需求: 我們的需求是只有在創(chuàng)建對(duì)象(學(xué)生)時(shí),才能設(shè)定ta的課程,所以我們在設(shè)計(jì)類

Flink代碼及ui界面應(yīng)用

Flink代碼及ui界面應(yīng)用 文章目錄 Flink和Spark各自優(yōu)劣 底層機(jī)制 Spark Flink 運(yùn)用 支持語言 Flink運(yùn)行代碼 maven配置 source部分transform模塊 sink模塊 執(zhí)行 1、命令行執(zhí)行 2、Flink web ui配置 job執(zhí)行日志 task manager日志 Flink和Spark各自優(yōu)劣 底層機(jī)

Udesk WebIM插件客戶身份認(rèn)證(一、Java簽名篇)

Udesk WebIM插件客戶身份認(rèn)證(一、Java簽名篇) 作者:張振琦 網(wǎng)站登錄用戶通過web im進(jìn)行聊天對(duì)話時(shí),可以將客戶信息通過鏈接轉(zhuǎn)給Udesk,這樣客服在與客戶對(duì)話時(shí),就可以直接查看客戶信息。通過客戶信息輔助組件也可以進(jìn)一步了解此客戶的訂單等其他信息。

Java多線程高并發(fā)之ThreadPool

Java多線程高并發(fā)之ThreadPool 前邊我們講述了:Java多線程高并發(fā)之基礎(chǔ)概念篇、Java多線程高并發(fā)之詳解JUC同步工具 分別從以下幾個(gè)方面了解線程的概念及如何使用: 1、線程是什么?為什么需要多線程?Java如何實(shí)現(xiàn)多線程? 2、Java對(duì)多線程的基礎(chǔ)操作:線程

Java時(shí)區(qū)時(shí)間轉(zhuǎn)換

Java時(shí)區(qū)時(shí)間轉(zhuǎn)換 開發(fā)中,我們可能需要將時(shí)區(qū)類的時(shí)間轉(zhuǎn)換成我們能夠理解的且表示正常的date類型(這些場景在數(shù)據(jù)庫時(shí)間字段比較常見,如mongo和es,他們儲(chǔ)存的時(shí)候時(shí)間是0時(shí)區(qū)表示,而我們處在東八區(qū),時(shí)間差為8小時(shí)),實(shí)例如下: String time = 2020-09-27T03:57:3

[Leetcode][第889題][JAVA][根據(jù)前序和后序遍歷構(gòu)造二叉樹][分治

[Leetcode][第889題][JAVA][根據(jù)前序和后序遍歷構(gòu)造二叉樹][分治][遞歸] 【問題描述】[中等] 【解答思路】 copyOfRange class Solution { public TreeNode constructFromPrePost(int[] pre, int[] post) { if(pre==null || pre.length==0) { return null; } r

總結(jié)

以上是生活随笔為你收集整理的java class文件 代码_java_基础——用代码编译.java文件+加载class文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。