Modify a Class File Inside a WAR File

If you only have a WAR (Web Application Archive) file and need to modify a URL in a class file inside the WAR, here are the detailed steps to achieve that:

Steps to Modify a Class File Inside a WAR File

  1. Extract the WAR File:

    • A WAR file is essentially a ZIP file. You can use any archive tool (such as WinRAR, 7-Zip, or the unzip command) to extract its contents.

      mkdir extracted_war
      unzip yourfile.war -d extracted_war
  2. Locate the Class File:

    • Navigate through the extracted directories to find the class file you need to modify. Typically, class files are located in the WEB-INF/classes directory or in a JAR file within the WEB-INF/lib directory.

  3. Decompile the Class File:

    • Use a Java decompiler (such as JD-GUI, CFR, or FernFlower) to decompile the class file into readable Java source code.

      Example using CFR:

      java -jar cfr-0.152.jar path/to/your/ClassFile.class > DecompiledClass.java
  4. Modify the Source Code:

    • Open the decompiled Java file in a text editor or IDE.

    • Locate the URL you need to modify and make the necessary changes.

    // Original code
    String url = "http://original-url.com";
    
    // Modified code
    String url = "https://new-url.com";
  5. Recompile the Modified Class File:

    • Use the Java Compiler (javac) to recompile the modified Java file back into a class file.

      javac -cp .:path/to/dependencies/* DecompiledClass.java
    • Ensure you include any dependencies the class file might have in the classpath.

  6. Replace the Class File:

    • Replace the original class file in the extracted WAR directory with the newly compiled class file.

  7. Repack the WAR File:

    • Use a tool like jar to repackage the extracted contents back into a WAR file.

      cd extracted_war
      jar -cvf ../modified.war *
  8. Deploy the Modified WAR File:

    • Deploy the modified WAR file to your application server as you would normally deploy a WAR file.

Tools Needed

  • Archive Tool: For extracting and repacking the WAR file (e.g., 7-Zip, WinRAR, unzip, jar).

  • Java Decompiler: For decompiling the class file (e.g., JD-GUI, CFR, FernFlower).

  • Text Editor/IDE: For modifying the source code (e.g., VS Code, IntelliJ IDEA, Eclipse).

  • Java Development Kit (JDK): For recompiling the Java file (javac).

Last updated