亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

defineClass 方法拋出 java.lang.ClassFormatError:

defineClass 方法拋出 java.lang.ClassFormatError:

慕村9548890 2022-04-28 15:45:11
我嘗試了以下代碼,但出現異常。有人可以幫我弄這個嗎,package defineClass;import java.io.FileInputStream;import java.io.IOException;public class DefineClass extends ClassLoader {    static String PATH = "E:\\WorkSpaceOpkey\\tester\\src\\test2\\Bar.java";    public static void main(String[] m) throws IOException {        FileInputStream fis = new FileInputStream(PATH);        byte[] b = new byte[fis.available()];        fis.read(b);        new DefineClass().defineClass("test2.Bar", b, 0, b.length);    }}我在定義類時遇到以下錯誤Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1885430635 in class file test2/Barat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.lang.ClassLoader.defineClass(ClassLoader.java:642)at defineClass.DefineClass.main(DefineClass.java:14)
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

根本不可能,因為類加載器會加載已編譯的類:

將字節數組轉換為 Class 類的實例,

您不能使用 ClassLoader加載java源代碼文件。

如果要動態使用 java 源代碼,則必須先將該源代碼編譯為字節碼,有關如何執行此操作的選項,請參見此處。

真正的答案當然是:不要只假設類做什么。總是閱讀他們相應的 java doc,并做更多的研究。有很多很好的資源可以詳細解釋類加載器,比如這里。


查看完整回答
反對 回復 2022-04-28
  • 1 回答
  • 0 關注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號