有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java到Java字节码编译器:如何获取Java类库信息?

我正在编写一个Java-to-Java字节码编译器,通过编译成Jasmin代码,并组装它。我创建它的目的是使源代码文件能够引用和使用Java库类(对于字符串、打印等,您几乎必须这样做)。我的问题是如何准确地进行这项工作

到目前为止,我只是使用了一个对所有库类列表的引用,该列表保存在Java安装文件夹中的一个文本文件中(它只是列出了它们的包和名称)。我在编写解析器/类型检查器时使用了它,尽管这并不理想,因为在使用库类时,类型检查器无法执行任何类型检查

现在我正在进行代码生成,这确实是一个问题,因为如果要调用库类的方法,必须给它完整的方法签名——我没有访问权

我在想人们对如何进步的建议是什么。一种方法是遍历所有类,创建一个包含所有参数和返回类型的数据库/列表。这显然非常耗时,而且可能太不现实。还有其他更优雅的方法吗

谢谢, 意志

另外,我正在使用Python编写代码。我想如果解决方案必须使用Java代码,我可以将其作为子流程运行


共 (2) 个答案

  1. # 1 楼答案

    通过进一步研究,使用Java反射似乎是可能的。我会回复这篇文章,让你知道我有多成功

  2. # 2 楼答案

    你知道,已经有了Java到字节码的编译器。还有一个JVM Python。你的实际目标是什么

    是什么让您认为创建方法/返回类型的集合“非常耗时”?“极其”需要多少时间?这是它在现实生活中的工作方式,从类文件中提取信息并不特别耗时,即使使用javap。除此之外,还有ASM、BCEL和其他一些库可以直接从.class文件中提取信息,但是javap提供了简单的文本输出,可能足以满足您的需要

    为了使用符号,您需要一个符号表。获取可用信息的唯一方法是存储可用信息。它比你想象的更快,更小,特别是如果你使用速记法