成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java動(dòng)態(tài)代碼運(yùn)行 動(dòng)態(tài)編程代碼

Java動(dòng)態(tài)生成代碼

可以的,我說(shuō)說(shuō)大概思路,很簡(jiǎn)單,你自己具體實(shí)現(xiàn)吧,把代碼寫給你沒(méi)意義的:

廣陽(yáng)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

1.將你這段字符串輸出到一個(gè)文件里,用Java類文件的方式命名。

2.調(diào)用外部javac命令將該文件編譯。

3.用類加載器(ClassLoad)動(dòng)態(tài)加載新的class文件并用Class.forName()注冊(cè)該類,然后就可以正常使用了。

上面的每一步都能在baidu中找到實(shí)現(xiàn)方法,自己發(fā)揮吧。

頁(yè)面上有個(gè)textarea,在里面寫java代碼,然后如何動(dòng)態(tài)編譯執(zhí)行這段java代碼??

后臺(tái)獲取這段代碼之后,將其自動(dòng)補(bǔ)全成一個(gè)java類。

然后將其用io生成為 .java文本文件

之后調(diào)用

Runtime.getRuntime().exec("x:/javac.exe xx.java ...") 編譯

最后使用反射或者代理調(diào)用這個(gè)類文件得到結(jié)果

怎樣動(dòng)態(tài)執(zhí)行一段JAVA代碼

首先你可以使用輸入輸出流(或者你說(shuō)的可能是要用反射得到程序結(jié)果來(lái)解析)解析做出*.Java文件。

然后可以使用runtime調(diào)用Dos下的java編譯命令編譯取得class文件。

然后使用classloader,反射等組合執(zhí)行生成的class文件。

java怎么動(dòng)態(tài)調(diào)試

1.debug。斷點(diǎn)調(diào)試。

2.輸出消息。system.out.println();來(lái)調(diào)試。

3.動(dòng)態(tài)代理(Dynamic Proxy)。動(dòng)態(tài)代理是一個(gè)特定的Java特性,它允許開(kāi)發(fā)者引入proxy類,加進(jìn)某一給定類之前,并通過(guò)某一給定接口截獲所有調(diào)用。你可以在很短時(shí)間內(nèi)用一個(gè)普通代理設(shè)置一個(gè)虛擬事件處理器,來(lái)查看事件發(fā)生順序。當(dāng)需要理解事件處理器時(shí)這是最簡(jiǎn)單和快捷的方法。

4.運(yùn)行時(shí)剖析器(Run-time Profiler)。剖析器是通過(guò)特定的JVM hooks在系統(tǒng)中跟蹤所有調(diào)用的強(qiáng)大工具。但是用它來(lái)跟蹤執(zhí)行過(guò)程是大才小用。

5.Aspects。面向方面編程。它是截獲你的代碼執(zhí)行既快速又容易的方法。你可以圍繞方法、構(gòu)造器、屬性訪問(wèn)等等有選擇地設(shè)置hook,而不需要修改原始代碼。在這些hook中,你可以打印調(diào)試消息。

1.2常用的。3.4.5網(wǎng)上找的。

java怎么把一段字符串當(dāng)做代碼來(lái)執(zhí)行

在javascript中eval()可以實(shí)現(xiàn)字符串轉(zhuǎn)代碼,java中需要使用動(dòng)態(tài)編譯。

把獲得的字符串寫入一個(gè)臨時(shí)文件中,然后編譯它,在調(diào)用其中的函數(shù)。

我們把要轉(zhuǎn)換的字符串構(gòu)造一個(gè)完整的類:如果方法是有返回值的.則:

public object eval(string str){

//生成java文件

string s = "class temp{";

s += "object rt(){"

s += "myclass mc = new myclass();"

s += " return mc."+str+"();";

s += "}"

s +="}";

file f = new file("temp.java");

printwriter pw = new printwriter(new filewriter(f));

pw.println(s);

pw.close();

//動(dòng)態(tài)編譯

com.sun.tools.javac.main javac = new com.sun.tools.javac.main();

string[] cpargs = new string[] {"-d", "所在目錄","temp.java"};

int status = javac.compile(cpargs);

if(status!=0){

system.out.println("沒(méi)有成功編譯源文件!");

return null;

}

//調(diào)用temp的rt方法返回結(jié)果:

myclassloader mc = new myclassloader();

class clasz = mc.loadclass("test.class",true);

method rt = clasz.getmethod("rt", new class[]{ string[].class });

return rt.invoke(null, new object[] { new string[0] });

//如果方法沒(méi)有返回就直接調(diào)用

}

我們可以先寫好多個(gè)重載的eval,有返回值和沒(méi)有返回值的.以及可以傳遞參數(shù)的.

這樣我們就可以用字符串轉(zhuǎn)換為java的語(yǔ)句來(lái)執(zhí)行.

新聞標(biāo)題:java動(dòng)態(tài)代碼運(yùn)行 動(dòng)態(tài)編程代碼
本文網(wǎng)址:http://jinyejixie.com/article32/dosdcsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、域名注冊(cè)、網(wǎng)站導(dǎo)航電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
仁布县| 肃宁县| 昌邑市| 土默特右旗| 虎林市| 南皮县| 兰西县| 蕲春县| 玉门市| 新晃| 葫芦岛市| 江安县| 翁源县| 安乡县| 莆田市| 枞阳县| 阿鲁科尔沁旗| 锦屏县| 清镇市| 江安县| 潮安县| 锦屏县| 禹城市| 读书| 武隆县| 临清市| 南皮县| 泰安市| 奈曼旗| 桃江县| 梁河县| 通辽市| 汝阳县| 湾仔区| 三河市| 横峰县| 合山市| 正宁县| 玛多县| 稷山县| 辽阳市|