gpt4 book ai didi

Javaassists 和 Java Web Start : class sign doesn't match the others classes sign is the same package

转载 作者:行者123 更新时间:2023-12-01 14:48:44 25 4
gpt4 key购买 nike

我正在使用 javaassists 来修改运行时类的行为。当我在计算机上运行该应用程序时,一切正常。

但是这个应用程序是由用户使用Java Web Start启动的,因此必须对应用程序的.jar进行签名。当类在运行时被 javaassists 修改并使用

加载时
CtClass.toClass() 

启动SecurityException的方法:

java.lang.SecurityException: class "com.sch.coberturas.db.CobDao"'s signer information does not match signer information of other classes in the same package

我可以通过将修改后的类隔离在单个类包中来避免它,但这是一个奇怪的解决方案。还有其他解决方法吗?

最佳答案

按照OP的要求,我正在创建有关我的评论的答案。

当您使用 SecurityManager 时,您必须始终提供正在使用的 protected 域。有了这些信息,javassist 将能够生成具有相同签名信息的类。

这意味着不要使用 CtClass.toClass()你应该使用ClassPool.toClass(CtClass ct, java.lang.ClassLoader loader, java.security.ProtectionDomain domain)

有关此方法的更多信息,请参阅 javassist javadoc

关于Javaassists 和 Java Web Start : class sign doesn't match the others classes sign is the same package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com