java - 如何更改 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 行文件并不难。
谢谢
解决方案
编译像 Tomcat 这样的大型项目可能是一项相当复杂的工作。如果你在不知道这个过程的情况下尝试反编译/编辑/重新编译,你可能会遇到很多问题。
从源代码构建整个项目可能更容易(或至少可预测)。一旦你设法构建它,你可以尝试编辑源代码。
您应该能够从项目的网站上查看源代码。
如果您因为觉得它不能正常工作而需要修补这个类,那么可能值得尝试提交一个错误报告
推荐阅读
- oauth - 有没有办法为 botframework 中的 SingleSignOn (SSO) 生成令牌以访问同一租户下的多个资源
- c# - 如果 nuget 已作为 nuget 依赖项安装,但它在您的项目中不可见,如何安装它?
- angular - 如何在 Angular 中进行基于角色的路由?
- javascript - 无法正确渲染项目卡。Reactjs Gatsbyjs Graphql
- javascript - 有没有办法在选项(复选框)打开时单击多个复选框,而当它关闭时,您一次只能选择一个?
- java - 类构造函数中的抽象方法
- apache-spark - 如何使用 Java/Scala 将 kafka 消费者输出附加到 HDFS 中的文件(镶木地板)?
- c# - 带有 ORACLE 查询的 OleDbCommand 不更新表
- python - 如何计算满足谓词的像素值?
- python - 在 Python 中转换时间列表的问题?