1
坦率地说,我甚至不知道它是否可行。 但我想要做的就像下面一样。如何从java中的.class文件获取实例
- 我在ClassFile.java中通过javac命令在终端中创建了一个类文件。
- 然后我想从.java文件或.class文件中获取一个实例。
- 接下来,我在eclipse中创建了另一个项目,正如你猜这个项目路径和上面的文件路径是完全不同的。例如,ClassFile.java/class文件可以位于'〜/ Downloads'文件夹中,另一方面,新的eclipse项目可以位于'〜/ workspace /'中。
- 所以我读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
这有什么办法让对象实例从.class文件或java文件?
P.S. 我希望不要使用额外的库。
对不起,我在代码中引用的文件名是'ClassFile.class',而不是'HelloWorld.class'。我只是试图解释;; –
可能的[如何从运行时从文件夹或JAR加载类的重复?](http://stackoverflow.com/questions/11016092/how-to-load-classes-at-runtime-from-a-folder-or -jar) –
我认为它可以以相同的方式但略有不同。无论如何,谢谢:D –