当前位置: 首页 > 知识库问答 >
问题:

如何在java中从. class文件中获取实例

申屠浩歌
2023-03-14

坦率地说,我甚至不知道这是否可能。但我想做的是如下所示。

>

  • 我通过终端中的javac命令从ClassFile.java制作了一个类文件。
  • 然后我想从. java文件或. class文件中获取一个实例。
  • 接下来,我在eclipse中做了另一个项目,因为你猜这个项目路径和上面的文件路径完全不同。例如,ClassFile.java/class文件可以位于“下载”文件夹中,另一方面,新的eclipse项目可以在“工作空间”中。
  • 所以我通过FileInputStream读取步骤1中提到的文件。
  • 从这里,我只是粘贴我的代码。

    公共课主课{

    private static final String CLASS_FILE_PATH = 
            "/Users/juneyoungoh/Downloads/ClassFile.class";
    
    private static final String JAVA_FILE_PATH = 
            "/Users/juneyoungoh/Downloads/ClassFile.java";
    
    private static Class getClassFromFile(File classFile) throws Exception {
        System.out.println("get class from file : [" + classFile.getCanonicalPath() + " ]");
        Object primativeClz = new Object();
        ObjectInputStream ois = null;
        ois = new ObjectInputStream(new FileInputStream(classFile));
        primativeClz = ois.readObject();
        ois.close();
        return primativeClz.getClass();
    }
    
    public static void main(String[] args) throws Exception {
        getClassInfo(getClassFromFile(new File(CLASS_FILE_PATH)));
    }
    

    }

    就像你的假设一样,这段代码有错误。例如,它显示:

    java.io.StreamCurruptedException: invalid stream header : CAFEBABE
    

    这意味着没有任何方法可以从中获取对象实例。类文件或。java文件?

    附言:我希望不要使用额外的图书馆。

  • 共有1个答案

    姬心思
    2023-03-14
    private static final String CLASS_FOLDER =
            "/Users/juneyoungoh/Downloads/";
    
    private static Class getClassFromFile(String fullClassName) throws Exception {
        URLClassLoader loader = new URLClassLoader(new URL[] {
                new URL("file://" + CLASS_FOLDER)
        });
        return loader.loadClass(fullClassName);
    }
    
    public static void main( String[] args ) throws Exception {
        System.out.println((getClassFromFile("ClassFile"));
    }
    
     类似资料:
    • 问题内容: 我使用以下代码实例化了一个对象: 如何获得此文件的大小? 是什么区别,和? 问题答案: 使用类中的方法。从javadocs: 返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则未指定返回值。 对于问题的第二部分,直接来自的javadocs: 返回此抽象路径名所命名的分区上该虚拟机可用的字节数 返回此抽象路径名命名的分区的大小 返回此抽象路径名所命名的分区中未分配的字节数

    • 问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资

    • 我想从SD卡文件路径中获取文件名。e、 g.:/storage/sdcard0/DCIM/Camera/1414240995236。jpg我想得到1414240995236。jpg我已经编写了获取相同内容的代码,但它不起作用。请帮忙<下面是我的代码:

    • 我试图从下面的HTML代码中获取文本$1.00(我有xpath,所以不用担心)。为此,我们可以说xpath是//*[@id=“price-string”] 我尝试使用driver.findElement(by.xpath(“//*[@id=”price-string“]”)),后跟.getText()、.getAttribute(“TextContent”)、.getAttribute(“Inne

    • 我正在尝试从检索或实例,而不将保存到文件系统。 中是否有任何方法从现有的返回或?

    • 我必须从文件中获取一个数字,有些文件包含字母和数字。比如(dsh8kuebw9)或者有(8)这样的空格,我怎样才能得到这些数字?我试过很多次了。我有一个方法可以找到一个数字出现在一个数字中的方法是count8方法。 parseInt将文件的行转换为整数,但由于在某些文件中有字母,我的方法遇到了问题,因为它只接受整数而不接受字符串