首页 > 解决方案 > 如何更改 jasper jar 文件中的类

问题描述

我在使用 jasper 时遇到了一些问题,我需要尝试在 jasper.jar 文件中编辑 SmapUtil 类

但是,我在这样做时遇到了一些问题。

我已经使用jd-gui反编译了jasper.jar文件,取出了SmapUtil.java文件,将安装方法从

    static void install(File classFile, byte[] smap) throws IOException {
      File tmpFile = new File(classFile.getPath() + "tmp");
      SDEInstaller installer = new SDEInstaller(classFile, smap);
      installer.install(tmpFile);
      if (!classFile.delete()) {
        throw new IOException("classFile.delete() failed");
      }
      if (!tmpFile.renameTo(classFile)) {
        throw new IOException("tmpFile.renameTo(classFile) failed");
      }
    }

 static void install(File classFile, byte[] smap){
      File tmpFile = new File(classFile.getPath() + "tmp");
      SDEInstaller installer = new SDEInstaller(classFile, smap);
      installer.install(tmpFile);
      while (!classFile.delete());
      while (!tmpFile.renameTo(classFile));
    }

如果第一次不起作用,基本上是继续尝试删除文件。

现在这是我面临的问题。

如果我尝试编译 SmapUtil.java,我会面临很多缺失的源代码。我试过使用 javac -classpath (original)jasper.jar SmapUtil.java,但我仍然有很多资源缺失。

我从天知道哪里下载了一个 jasper-sources.jar 文件并将其用作-classpath,但缺少的源代码仍然存在。

我该怎么做?我认为在 jar 中更改 2 行文件并不难。

谢谢

标签: java

解决方案


编译像 Tomcat 这样的大型项目可能是一项相当复杂的工作。如果你在不知道这个过程的情况下尝试反编译/编辑/重新编译,你可能会遇到很多问题。

从源代码构建整个项目可能更容易(或至少可预测)。一旦你设法构建它,你可以尝试编辑源代码。

您应该能够从项目的网站上查看源代码。

如果您因为觉得它不能正常工作而需要修补这个类,那么可能值得尝试提交一个错误报告


推荐阅读