国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解析用GraalVm編譯的class文件

這篇具有很好參考價(jià)值的文章主要介紹了解析用GraalVm編譯的class文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Task1實(shí)驗(yàn)材料:

解析用GraalVm編譯的class文件,開發(fā)語(yǔ)言,java

javap的用法

用法: javap <options> <classes>
其中, 可能的選項(xiàng)包括:
  --help -help -h -?               輸出此幫助消息
  -version                         版本信息
  -v  -verbose                     輸出附加信息
  -l                               輸出行號(hào)和本地變量表
  -public                          僅顯示公共類和成員
  -protected                       顯示受保護(hù)的/公共類和成員
  -package                         顯示程序包/受保護(hù)的/公共類
                                   和成員 (默認(rèn))
  -p  -private                     顯示所有類和成員
  -c                               對(duì)代碼進(jìn)行反匯編
  -s                               輸出內(nèi)部類型簽名
  -sysinfo                         顯示正在處理的類的
                                   系統(tǒng)信息(路徑、大小、日期、SHA-256 散列)
  -constants                       顯示最終常量
  --module <模塊>, -m <模塊>       指定包含要反匯編的類的模塊
  -J<vm-option>                    指定 VM 選項(xiàng)
  --module-path <路徑>             指定查找應(yīng)用程序模塊的位置
  --system <jdk>                   指定查找系統(tǒng)模塊的位置
  --class-path <路徑>              指定查找用戶類文件的位置
  -classpath <路徑>                指定查找用戶類文件的位置
  -cp <路徑>                       指定查找用戶類文件的位置
  -bootclasspath <路徑>            覆蓋引導(dǎo)類文件的位置
  --multi-release <version>        指定要在多發(fā)行版 JAR 文件中使用的版本

GNU 樣式的選項(xiàng)可使用 = (而非空白) 來(lái)分隔選項(xiàng)名稱
及其值。

如果只是單純的用javap +class文件名的話,那只是單純的反編譯class文件而已。

我們都知道class文件的字節(jié)碼文件,是難以理解的。

用javap詳細(xì)輸出

javap -v  Main.class

解析用GraalVm編譯的class文件,開發(fā)語(yǔ)言,java

很好理解。這里保存了最新更改時(shí)間和文件大小為414字節(jié)。

類聲明:

public class Main

版本信息:

minor version: 0
major version: 61

這表示 Java 編譯器的次要版本為 0,主要版本為 61。Java 版本號(hào) 61 對(duì)應(yīng) JDK 17。

訪問(wèn)標(biāo)志:

flags: (0x0021) ACC_PUBLIC, ACC_SUPER

這表示類具有 ACC_PUBLICACC_SUPER 兩個(gè)訪問(wèn)標(biāo)志。

類層次結(jié)構(gòu):

this_class: #21
super_class: #2

this_class 表示當(dāng)前類為索引為 21 的常量池項(xiàng)(#21 = Class #22 // Main),而 super_class 表示其父類為索引為 2 的常量池項(xiàng)(#2 = Class #4 // java/lang/Object)。

接口、字段、方法和屬性統(tǒng)計(jì):

interfaces: 0, fields: 0, methods: 2, attributes: 1

該類沒(méi)有實(shí)現(xiàn)接口,沒(méi)有字段,有兩個(gè)方法,一個(gè)屬性。

常量池:

Constant pool: ...

常量池包含了類中使用的常量信息,包括方法引用、字段引用、字符串等。

方法信息:

#25 = Utf8 main
#26 = Utf8 ([Ljava/lang/String;)V

這表示類中有一個(gè)名為 main 的方法,其描述符為 ([Ljava/lang/String;)V,即主方法。

源文件信息:

#27 = Utf8 SourceFile
#28 = Utf8 Main.java

表示源文件名為 Main.java。

解析用GraalVm編譯的class文件,開發(fā)語(yǔ)言,java

  1. 構(gòu)造函數(shù):

    • aload_0:將當(dāng)前對(duì)象的引用加載到操作數(shù)棧上。
    • invokespecial #1:調(diào)用父類的構(gòu)造函數(shù)。
    • return:返回。
  2. 主函數(shù):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-801941.html

    • getstatic #7:從靜態(tài)字段區(qū)獲取java.lang.System.out對(duì)象。
    • ldc #13:將字符串常量"Hello world!"加載到操作數(shù)棧上。
    • invokevirtual #15:調(diào)用java.io.PrintStream.println方法,將字符串輸出到控制臺(tái)。
    • return:返回。

到了這里,關(guān)于解析用GraalVm編譯的class文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • class文件中,常量池之后的相關(guān)數(shù)據(jù)解析!【class二進(jìn)制文件分析】

    class文件中,常量池之后的相關(guān)數(shù)據(jù)解析!【class二進(jìn)制文件分析】

    前言:前段時(shí)間讀《深入java虛擬機(jī)》介紹到class文件的時(shí)候,由于理論知識(shí)較多,人總感覺疲憊不堪,就泛泛閱讀了一下。在工作中使用起來(lái)知識(shí)點(diǎn)知道,但是總是需要查閱各種資料。今天有時(shí)間,繼續(xù)整理常量池后面的相關(guān)知識(shí)。 class文件中,我們可以通過(guò)背或記也好,或

    2024年02月07日
    瀏覽(27)
  • 【JVM學(xué)習(xí)】Class文件解析

    最近為了加深對(duì)于JAVA的理解,在復(fù)習(xí)JVM,這里面的內(nèi)容大部分都是比較確定的、文檔性質(zhì)的內(nèi)容,目前并沒(méi)有特別的總結(jié)。但是看到類文件結(jié)構(gòu),手癢,想寫了個(gè)解析文件的解析器,那就簡(jiǎn)單記錄下吧。 詳細(xì)內(nèi)容不記了,太多了,有興趣的同學(xué)看虛擬機(jī)相關(guān)書籍了解,這里

    2023年04月13日
    瀏覽(20)
  • 使用GraalVM native-image 編譯SpringBoot3全過(guò)程

    使用GraalVM native-image 編譯SpringBoot3全過(guò)程

    本文記錄了使用native-image編譯SpringBoot3.0.3的過(guò)程及遇到的問(wèn)題。其中一些問(wèn)題也是網(wǎng)上很多朋友遇到,我在實(shí)際操作的過(guò)程也遇到過(guò)同樣的問(wèn)題,在此做一記錄。 目錄 一、編譯環(huán)境準(zhǔn)備 1.1 安裝GraalVM 1.2 安裝native-image 1.3 IDE設(shè)置 1.4?Visual Studio 2022 1.5?pom.xml文件 二、使用nati

    2024年02月11日
    瀏覽(23)
  • 一、認(rèn)識(shí) JVM 規(guī)范(JVM 概述、字節(jié)碼指令集、Class文件解析、ASM)

    一、認(rèn)識(shí) JVM 規(guī)范(JVM 概述、字節(jié)碼指令集、Class文件解析、ASM)

    JVM : Java Virtual Machine ,也就是 Java 虛擬機(jī) 所謂虛擬機(jī)是指:通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的計(jì)算機(jī)系統(tǒng)。 即:虛擬機(jī)是一個(gè)計(jì)算機(jī)系統(tǒng)。這種計(jì)算機(jī)系統(tǒng)運(yùn)行在完全隔離的環(huán)境中,且它的硬件系統(tǒng)功能是通過(guò)軟件模擬出來(lái)的。 JVM 通

    2024年01月23日
    瀏覽(31)
  • 開發(fā)Android原生插件,引入自己打的jar報(bào),編譯報(bào) Unsupported class file major version 61

    “Unsupported class file major version 61” 錯(cuò)誤的原因是由于你自己大的jar包當(dāng)時(shí)是用的Java 17打包的,因?yàn)樵?Java 中,每個(gè)主要版本都有一個(gè)對(duì)應(yīng)的 major version 值。例如,Java 8 的 major version 值為 52,Java 9 的 major version 值為 53,以此類推。Java 17 的 major version 值為 61。 解決這個(gè)問(wèn)題,

    2024年02月09日
    瀏覽(29)
  • 低版本jdk運(yùn)行高版本編譯jar包失敗(class file version 61.0), this version of the Java Runtime class file 52.0

    低版本jdk運(yùn)行高版本編譯jar包失敗(class file version 61.0), this version of the Java Runtime class file 52.0

    省流:使用jdk1.8執(zhí)行17編譯的包,啟動(dòng)報(bào)錯(cuò)。 ? ? ? ? 項(xiàng)目運(yùn)行中難免出現(xiàn)服務(wù)器環(huán)節(jié)集成其它jar包的情況,而其它jar包的jdk版本可能和我們業(yè)務(wù)項(xiàng)目的jdk版本不一致,如果比我們業(yè)務(wù)版本低,那么可能不會(huì)出現(xiàn)問(wèn)題, 因?yàn)閖dk向下兼容,如果jdk版本比我們業(yè)務(wù)版本高,可能就

    2024年02月02日
    瀏覽(36)
  • 安卓系統(tǒng)--翻譯手機(jī)rom語(yǔ)言 添加多國(guó)語(yǔ)言 編譯apk 反編譯ODEX 工具步驟解析

    安卓系統(tǒng)--翻譯手機(jī)rom語(yǔ)言 添加多國(guó)語(yǔ)言 編譯apk 反編譯ODEX 工具步驟解析

    很多小品牌機(jī)型不具備多語(yǔ)言設(shè)置。國(guó)內(nèi)大都是中文。要想換為其他語(yǔ)言除非固件支持。例如國(guó)際版固件等等。大廠基本都有中文或者英文或者其他語(yǔ)言配置。而小品牌機(jī)型只能通過(guò)修改rom來(lái)達(dá)到多語(yǔ)言調(diào)用. 今天給友友介紹一款工具,可以用來(lái)翻譯手機(jī)rom語(yǔ)言。添加多國(guó)語(yǔ)

    2024年02月04日
    瀏覽(18)
  • PHP調(diào)用java class 類實(shí)現(xiàn)文件簽名

    起因:對(duì)接某平臺(tái)API接口,發(fā)送的文件需要做 SM3 簽名,對(duì)方平臺(tái)是java寫的,只有java加密示例,照著java的加密算法翻譯為PHP版本,在編碼轉(zhuǎn)換上始終有些差異。沒(méi)辦法,只能想辦法使用他們的java方式。 Demo.java文件:

    2024年02月09日
    瀏覽(22)
  • Java筆記:使用javassist修改class文件內(nèi)方法

    在工作突然有一個(gè)需求。線上運(yùn)維的一個(gè)tomcat的web項(xiàng)目,運(yùn)行的程序不正常。需要修改代碼??墒沁@個(gè)項(xiàng)目代碼非常的老,并且公司存儲(chǔ)的源代碼跟線上的不一致。 我了個(gè)擦,沒(méi)有源代碼但是還要結(jié)局客戶的問(wèn)題。只能到線上將對(duì)應(yīng)程序的class文件拷貝到本地進(jìn)行修改,每修

    2024年02月03日
    瀏覽(23)
  • 【C語(yǔ)言】從預(yù)處理到機(jī)器代碼的C語(yǔ)言編譯過(guò)程解析

    當(dāng)我們編寫一個(gè)C語(yǔ)言程序時(shí),我們需要經(jīng)歷一個(gè)編譯的過(guò)程,將源代碼轉(zhuǎn)換為可執(zhí)行的機(jī)器代碼。這個(gè)過(guò)程涉及到多個(gè)階段和環(huán)節(jié),每個(gè)階段都有其特定的任務(wù)和功能。在本篇博客中,我們將詳細(xì)介紹C語(yǔ)言的編譯過(guò)程。 目錄 一、預(yù)處理階段(Preprocessing) 二、詞法分析階段

    2024年02月13日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包