2017-05-03 58 views
-1

所以我試圖編輯一個.jar文件中的類文件(該.jar文件有一個其他幾個類,但我只是試圖編輯這一個)。我爲這個特定的類使用了源代碼.java,並且我無法將其編譯到一個類中,因爲編譯器會調用錯誤,因爲它正在從包中調用事物。如何將已編輯的java文件編譯爲屬於包的一部分的類文件[與Minecraft相關]

有誰知道問題是什麼?

另外,如果有人知道一個程序,它將允許我直接編輯.jar文件中的.class文件的代碼,而無需進行所有的反編譯和重新編譯,這將非常有幫助。

的額外信息

  1. .jar文件是國防部的Minecraft我掀起了一個朋友。
  2. 原來的.class準則(工作):

    package pw.cinque.cpsmod; 
    import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent$ClientTickEvent; 
    import net.minecraftforge.client.event.MouseEvent; 
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent; 
    import net.minecraftforge.client.event.MouseEvent; 
    import pw.cinque.cpsmod.CPSMod; 
    
    public class ClickListener 
    { 
        public ClickListener() {} 
    
        private boolean hasClickedThisTick = false; 
    
        @cpw.mods.fml.common.eventhandler.SubscribeEvent 
        public void onMouse(MouseEvent event) { 
        if (button != 0) { 
         return; 
        } 
    
        if ((CPSMod.preventDoubleclicks) && (buttonstate) && (hasClickedThisTick)) { 
         event.setCanceled(true); 
         return; 
        } 
    
        if (buttonstate) { 
         hasClickedThisTick = true; 
         CPSMod.addClick(); 
        } 
        } 
    
        @cpw.mods.fml.common.eventhandler.SubscribeEvent 
        public void onClientTick(cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent event) { 
        hasClickedThisTick = false; 
        } 
    } 
    
  3. 文件的代碼我編輯:

    package pw.cinque.cpsmod; 
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent$ClientTickEvent; 
    import net.minecraftforge.client.event.MouseEvent; 
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
    import cpw.mods.fml.common.gameevent.TickEvent; 
    import net.minecraftforge.client.event.MouseEvent; 
    import pw.cinque.cpsmod.CPSMod; 
    
    public class ClickListener { 
        private boolean hasClickedThisTick = false; 
        int newVar = 0; 
        @SubscribeEvent 
        public void onMouse(MouseEvent event) { 
         if (event.button != 0) { 
          return; 
         } 
         if (CPSMod.preventDoubleclicks && event.buttonstate && this.hasClickedThisTick) { 
          event.setCanceled(true); 
          return; 
         } 
         if (event.buttonstate) 
         { 
          this.hasClickedThisTick = true; 
          CPSMod.addClick(); 
          newVar = CPSMod.getClicks();    
          if(newVar > 5) 
          { 
        CPSMod.addClick(); 
    
        } 
    } 
    } 
    
    @SubscribeEvent 
    public void onClientTick(TickEvent.ClientTickEvent event) { 
        this.hasClickedThisTick = false; 
    } 
    } 
    
  4. 這些都是錯誤的消息,我得到當我嘗試編譯它。

ClickListener.java:2: error: package cpw.mods.fml.common.eventhandler does not exist 
    import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
              ^
ClickListener.java:3: error: package cpw.mods.fml.common.gameevent does not exist 
    import cpw.mods.fml.common.gameevent.TickEvent; 
             ^
ClickListener.java:4: error: package cpw.mods.fml.common.gameevent does not exist 
    import cpw.mods.fml.common.gameevent.TickEvent$ClientTickEvent; 
             ^
ClickListener.java:5: error: package net.minecraftforge.client.event does not exist 
    import net.minecraftforge.client.event.MouseEvent; 
             ^
ClickListener.java:7: error: package cpw.mods.fml.common.eventhandler does not exist 
import cpw.mods.fml.common.eventhandler.SubscribeEvent; 
            ^
ClickListener.java:8: error: package cpw.mods.fml.common.gameevent does not exist 
import cpw.mods.fml.common.gameevent.TickEvent; 
            ^
ClickListener.java:9: error: package net.minecraftforge.client.event does not exist 
import net.minecraftforge.client.event.MouseEvent; 
            ^
ClickListener.java:10: error: cannot find symbol 
import pw.cinque.cpsmod.CPSMod; 
        ^
    symbol: class CPSMod 
    location: package pw.cinque.cpsmod 
ClickListener.java:17: error: cannot find symbol 
    public void onMouse(MouseEvent event) { 
         ^
    symbol: class MouseEvent 
    location: class ClickListener 
ClickListener.java:40: error: package TickEvent does not exist 
    public void onClientTick(TickEvent.ClientTickEvent event) { 
            ^
ClickListener.java:16: error: cannot find symbol 
    @SubscribeEvent 
    ^
    symbol: class SubscribeEvent 
    location: class ClickListener 
ClickListener.java:39: error: cannot find symbol 
    @SubscribeEvent 
    ^
    symbol: class SubscribeEvent 
    location: class ClickListener 
ClickListener.java:21: error: cannot find symbol 
     if (CPSMod.preventDoubleclicks && event.buttonstate && this.hasClickedThisTick) { 
      ^
    symbol: variable CPSMod 
    location: class ClickListener 
ClickListener.java:25: error: illegal start of type 
     if (event.buttonstate) { 
     ^
ClickListener.java:27: error: cannot find symbol 
      CPSMod.addClick(); 
      ^
    symbol: variable CPSMod 
    location: class ClickListener 
ClickListener.java:28: error: cannot find symbol 
     gay = CPSMod.getClicks(); 
      ^
    symbol: variable CPSMod 
    location: class ClickListener 
ClickListener.java:33: error: cannot find symbol 
      CPSMod.addClick(); 
     ^
    symbol: variable CPSMod 
    location: class ClickListener 
17 errors 

回答

0

您需要編譯所有依賴這個類,否則將無法正常工作。可能你應該從.jar中獲得所有文件,進行所需的修改,然後再編譯和壓縮。