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 –