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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

java_基礎——用代碼編譯.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:獲取此平臺提供的 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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。