gpt4 book ai didi

java - 将包+类名转换为 .class 文件名

转载 作者:行者123 更新时间:2023-12-01 09:45:52 25 4
gpt4 key购买 nike

我正在编写一个分析 .class 文件的程序。我想将包和类名称附加到我的输出中。

我的计划是编写一个函数,它将包和类名作为输入并找到相应的 .class 文件(这样用户就不必输入该文件,并且可以'不要弄错),其中“find”应理解为“给我一些数据,我可以将其用作 BCEL 的 ClassParser 构造函数的参数”(可以是文件名,也可以是 zip 文件的名称和zip 文件中的名称)。

我该怎么做? java有没有自带的东西可以做到这一点?我知道名称解析是在 CLASSPATH 上下文中完成的,因此用户可能也应该提供其中之一;没关系。

注意:解决方案不应执行.class 文件中的任何代码。只是字节,女士;-)

最佳答案

好吧,如果您使用 BCEL,一切都已经存在,请参阅 ClassPath :

import java.io.IOException;
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.util.ClassPath;

public class BcelTest {
public static void main(String[] args) throws IOException {
String classPath=System.getProperty("java.class.path");
// demonstrating with our own class path examplary for an arbitrary path String
ClassPath cp=new ClassPath(classPath);
ClassPath.ClassFile cf=cp.getClassFile(BcelTest.class.getName());
ClassParser p=new ClassParser(cf.getInputStream(), cf.getPath());
JavaClass jc = p.parse();
System.out.println(jc);

// or just using our own system path explicitly
cf=ClassPath.SYSTEM_CLASS_PATH.getClassFile("java.lang.Object");
p=new ClassParser(cf.getInputStream(), cf.getPath());
jc = p.parse();
System.out.println(jc);
}
}

关于java - 将包+类名转换为 .class 文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38033576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com