更改已编译类中的字符串常量

2024-02-19

我需要更改已部署的Java程序中的字符串常量,即编译后的值.class- 文件。它可以重新启动,但不容易重新编译(尽管如果这个问题没有答案,这是一个不方便的选择)。这可能吗?

更新:我刚刚用十六进制编辑器查看了该文件,看起来我可以轻松更改那里的字符串。这会起作用吗,也就是说,这不会使文件的某种签名无效吗?旧的和新的字符串都是字母数字的,并且如果需要的话可以具有相同的长度。

更新2:我修好了。因为我需要更改的特定类非常小,并且在项目的新版本中没有更改,所以我可以编译它并从那里获取新类。出于教育目的,仍然对不涉及编译的答案感兴趣。


如果您有此类的资源,那么我的方法是:

  • 获取 JAR 文件
  • 获取单个类的源代码
  • 使用类路径上的 JAR 来编译源代码(这样,您就不必编译其他任何内容;JAR 已包含二进制文件也不会造成损害)。您可以使用最新的 Java 版本;只需使用降级编译器-source and -target.
  • 使用以下命令将 JAR 中的类文件替换为新文件jar u或 Ant 任务

Ant 任务示例:

        <jar destfile="${jar}"
            compress="true" update="true" duplicate="preserve" index="true"
            manifest="tmp/META-INF/MANIFEST.MF"
        >
            <fileset dir="build/classes">
                <filter />
            </fileset>
            <zipfileset src="${origJar}">
                <exclude name="META-INF/*"/>
            </zipfileset>
        </jar>

这里我也更新一下清单。首先放置新类,然后添加原始 JAR 中的所有文件。duplicate="preserve"将确保新代码不会被覆盖。

如果代码未签名,并且新字符串的长度与旧字符串的长度完全相同,您还可以尝试替换字节。 Java 对代码做了一些检查,但有.class 文件中没有校验和 https://en.wikipedia.org/wiki/Java_class_file.

您必须保留长度;否则类加载器会感到困惑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改已编译类中的字符串常量 的相关文章

  • SPNEGO 密码身份验证问题

    我已将我的应用程序配置为通过 SPNEGO 与 Websphere 使用 Kerberos 身份验证 这是详细信息 krb5 conf libdefaults default realm ABC MYCOMPANY COM default
  • 用于解析和构建逻辑表达式的 Java 库

    我正在寻找一个 Java 开源库来解析和构建类似 SQL 的表达式 例如评估表达式的有效性 例如 a x or y and b z 另外我想要一个用于构建或扩展表达式的 API 就像是 Expression exp new Expressi
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 从 Spring MVC XML 文件转移到 javaconfig。我真的对我的数据库 XML 文件感到困惑

    我从 Spring MVC XML 文件转移到 javaconfig 我真的对我的数据库 XML 文件感到困惑 我不知道如何让 Hibernate4 工作以及我的 JBoss JNDI 数据源工作 有人可以告诉我如何使 javaconfig
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 使用 Spring 控制器处理错误 404

    I use ExceptionHandler处理我的网络应用程序抛出的异常 在我的例子中我的应用程序返回JSON回应HTTP status用于对客户端的错误响应 但是 我正在尝试弄清楚如何处理error 404返回与处理的类似的 JSON
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 如何在 HandlerInterceptorAdapter 中添加 HttpServletRequest 标头?

    我正在尝试将授权标头添加到我的请求中 作为我们切换环境时的临时解决方法 我试图在扩展 HandlerInterceptorAdapter 的拦截器中处理它 我使用 MutableHttpServletRequest 类制作here http
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何从 JavaFX 中的另一个控制器类访问 UI 元素?

    我有一个使用 NetBeans 8 编写的 JavaFX Java 8 应用程序 没有SceneBuilder 我的应用程序有一个主窗口 该窗口有自己的 FXML 文件 primary fxml 和自己的控制器类 FXMLPrimaryCo
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin
  • 如何使用自定义 JDK 构建 Jenkins 项目?

    我有一个常规的 Jenkins 实例 运行一些多分支管道 该实例在 JDK 11 上运行 因为 Jenkins 并不真正支持更高版本 没关系 但不好的是 我的所有管道似乎也都受到 Java 11 的限制 Jenkins 仅使用它自己也使用的
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle

随机推荐

  • 如何仅使用标准库将 UTC 日期时间转换为本地日期时间?

    我有一条蟒蛇datetime使用创建的实例datetime utcnow 并保存在数据库中 为了显示 我想转换datetime从数据库检索实例到本地datetime使用默认的本地时区 即 就好像datetime是使用创建的datetime
  • 在 SQL Server 数据库中自动添加对象及其关系

    假设我想插入一个新的Experiment在我的 SQL Server 数据库中 使用实体框架 4 0 Experiment有 1 Tasks in it Both Experiment and Task从获得EntityObject 此外
  • Javascript 数据表中的自动换行列数据

    我有一个 JS 数据表 我们在其中输入客户信息 在某些情况下 一些客户参考是这样的 reference text 26reference 5Ftext 3D 2526reference 255Ftext 253Dtest 252520ips
  • AudioKit v4.2 上的 AKRhodesPiano 错误(粉碎)

    我在用着AudioKit 版本 4 2 https github com AudioKit AudioKit releases tag v4 2在我的手机 iPhone X 上安装我的应用程序后 我收到此错误 参见附图 使用 AKRhode
  • 如何获取 SQL 中具有 MAX 和 MIN 值的行的 ID

    我正在努力使我的网站使用的查询更加高效 由于对 SQL 有点模糊 我还没有真正学会如何使用嵌套查询 但我刚刚设法得到了一些非常接近我想要的东西 我销售吉他 我有一个大数据库 其中单独列出了具有不同饰面选项的所有产品 项目在 dB 中具有唯一
  • oracle多用户功能

    如何创建可供不同用户使用的功能 它必须像内置的 oracle 函数一样工作 可以从任何用户调用 我想这可以通过授予一些特权来实现 这应该为特定用户执行此操作 GRANT EXECUTE ON your function TO some us
  • 如何将包含冒号的 GET 请求发送到 ASP.NET MVC2 控制器?

    这工作正常 GET mvc Movies TitleIncludes Lara 20Croft 当我提交包含冒号的请求时 如下所示 GET mvc Movies TitleIncludes Lara 20Croft 20Tomb 它会生成
  • 如何在Android Studio中更改项目名称

    将 eclipse 项目导入 Android Studio 并将其保存在新文件夹中 将包名称和所有内容更改为新名称 但项目名称仍然是旧项目中的名称 如何将指向的名称更改为其他名称 尝试更改此文件的内容 C Path To Project i
  • EnterCriticalSection 死锁

    多线程日志记录应用程序出现死锁情况 小背景 我的主应用程序有 4 6 个线程正在运行 主线程负责监视我正在做的各种事情的运行状况 更新 GUI 等 然后我有一个传输线程和一个接收线程 发送和接收线程与物理硬件通信 我有时需要调试发送和接收线
  • 如何使用向量通过指针引用递归结构

    我有结构 我们称它们为 sn 看起来像 struct sn string name vector
  • 无法确定包装器版本

    我创建了一个反应本机应用程序 只需执行以下操作 react native init app 我已经按照这个教程进行操作 Facebook 入门 我使用 Linux https facebook github io react native
  • 如何使用 SciPy 插值 3D 数据时提高性能

    我有代表大气的 3D 数据 现在我想将此数据插值到一个公共 Z 坐标 我的意思应该从函数的文档中清楚地看出 下面的代码工作正常 但我想知道是否有办法提高性能 def interpLevel grid value data interp li
  • Angular Firestore:使用 where 子句的集合查询的正确语法是什么?

    我有查询 Firestore 并返回 Observable 类型的工作代码ImageUploadWId 我想退货Promise反而 这是因为 我的数据不经常变化 我正在根据传入的数据执行删除 SnapshotChanges 返回操作数组 第
  • 在 Bootstrap 4 中显示/隐藏 div,同时调整传单地图的高度

    我正在构建一个 Web 应用程序 屏幕上有 3 个组件 导航栏 置顶 主容器地图容器 主要的 75 聊天窗口 主窗口的 25 我想要做的是隐藏聊天页脚 然后让地图容器占据所有主容器 但如果用户想查看聊天窗口 他单击一个按钮 地图就会缩小到窗
  • 始终获得“None”的打印值

    好吧 这是我的代码 我得到了我想要的结果 但我不断得到它下面的 无 值 如何消除 无 值 n input What day of the week are you leaving r input How many days will you
  • 从 CLI 查询 InfluxDB 时显示本地时区的时间

    我使用 UTC 将点存储在 InfluxDB 中 但是从命令行 https docs influxdata com influxdb v1 6 tools shell influx precision rfc3339 我想在所有查询中以本地
  • LendingClub.com API 在二级市场购买票据时发生内部服务器错误

    我正在尝试购买 Lending Club 二级市场的票据 但一直收到 内部服务器错误 我也多次向Lending Club寻求支持 但他们毫无头绪 我也尝试关注这篇文章 但没有运气LendingClub com 在二级市场购买票据时出现 AP
  • 实体框架通用存储库错误

    我正在尝试为我的实体框架存储库创建一个非常通用的泛型存储库 它具有基本的 CRUD 语句并使用接口 我的头先撞到了砖墙 然后被撞倒了 这是我的代码 使用实体框架模型在控制台应用程序中编写 并带有一个名为 Hurl 的表 只是试图通过对象的
  • Python:Urllib.urlopen 非数字端口

    对于以下代码 theurl https s email protected cdn cgi l email protection nic update hostname s myip s wildcard NOCHG mx NOCHG ba
  • 更改已编译类中的字符串常量

    我需要更改已部署的Java程序中的字符串常量 即编译后的值 class 文件 它可以重新启动 但不容易重新编译 尽管如果这个问题没有答案 这是一个不方便的选择 这可能吗 更新 我刚刚用十六进制编辑器查看了该文件 看起来我可以轻松更改那里的字