簡體   English   中英

Java到Java字節碼編譯器:如何獲取Java類庫信息?

[英]Java to Java Bytecode Compiler: How Do I Get Java Class Library Information?

我正在通過將Java編譯為Jasmin代碼並將其組裝來編寫Java到Java Bytecode編譯器。 我創建它的目的是,源代碼文件將能夠引用和使用Java庫類(對於字符串,打印等,您幾乎必須這樣做)。 我的問題是如何確切地做到這一點。

到目前為止,我一直在使用對所有庫類列表的引用,該列表保存在Java安裝文件夾中的文本文件中(它僅列出了它們的包和名稱)。 我用它來編碼解析器/類型檢查器,盡管這並不理想,因為使用庫類時類型檢查器無法進行任何類型檢查。

現在,我正在進行代碼生成,這確實是一個問題,因為如果您要調用庫類的方法,則必須提供其完整的方法簽名-這是我無法訪問的。

我在徘徊人們對如何進步的建議。 一種方法是遍歷所有類,以創建其所有參數和返回類型的數據庫/列表。 顯然,這將非常耗時,並且可能太不現實。 還有其他更優雅的方法嗎?

謝謝,威爾

PS我正在使用Python對此進行編碼。 我想如果解決方案必須使用Java代碼,我可以將其作為子進程運行。

您知道,已經有一個Java到字節碼的編譯器。 和JVM Python。 您的實際目標是什么?

是什么使您認為創建方法/返回類型的集合“非常耗時”? “極度”浪費時間嗎? 這是它在現實生活中的工作方式,並且即使使用javap ,從類文件中提取信息也不是特別耗時。 除此之外,還有ASM,BCEL和其他一些庫可直接從.class文件中提取信息,但是javap提供了簡單的文本輸出,很可能滿足您的需求。

為了使用符號,您需要一個符號表。 獲取可用信息的唯一方法是存儲可用信息。 它比您想像的更快,更小,尤其是在使用速記符號時。

通過進一步研究,似乎可以通過使用Java Reflection來實現。 我將回復此帖子,讓您知道我的成功程度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM