Честно говоря, я даже не знаю, возможно это или нет. Но то, что я пытаюсь сделать, так же, как показано ниже.
- Я сделал файл класса из ClassFile.java с помощью команды javac в терминале.
- Затем я хочу получить экземпляр из файла .java или файла .class.
- Затем я сделал еще один проект в eclipse. Как вы догадались, этот путь к проекту и верхний путь к файлу совершенно разные. Например, файл ClassFile.java/class может находиться в папке «~/Downloads», с другой стороны, новый проект eclipse может находиться в папке «~/workspace/».
- Итак, я прочитал файл, на который ссылался на шаге 1 FileInputStream.
Отсюда я просто вставляю свой код.
общественный класс Основной {
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. Я не хочу использовать дополнительные библиотеки.