在Java Android中动态地编辑/创建类
我正在寻找一种在运行时动态定义类并在Android中实例化的方法.从我的理解来看,这已经在Android中完成了,我只需要一些帮助来弄清楚. 我可以在JavaScript和PHP中相似.我知道可以在Java中使用ASM,BCEL或CGLIB之类的东西来完成.但是,我对其中的任何一个了解不足以了解它们是否会在Android上工作.或者,它们会起作用,有什么含义? 假设所有这三个都可以在Android中起作用,有人可以将我指向正确的方向,以便在哪里开始理解要使用哪种方法以及如何使用它? 我没有做太多的Java编程,而我只是最近才在Android中使用它,因此,我感谢我能获得的所有帮助/更正.话虽如此,如果您的回答不简单:不要这样做,我将不胜感激.我正在寻找如何做这件事,而不是如何正确地做到这一点.至少,直到我的应用程序崩溃之前. :) 我相信,在以下情况下,这已经发生在Android中:(不是100%确定) 从JSON创建一个对象. aidl 解决方案
0 2024-02-06
编程技术问答社区
使用Mockito 1.9.5和DexMaker-Mockito-1.0的VerifyError
像许多其他人一样,我很高兴听到 Mockito现在与Android 并遵循这个教程用我自己的眼睛.一切似乎都是粉丝拍的,我开始将模拟解决方案纳入我的Android测试项目... 错误 但是,在设置我的应用程序的测试项目以利用mockito-all-1.9.5,dexmaker-1.0和dexmaker-mockito-1.0罐子,我在第一个测试案例中遇到了问题.精确实际上这个问题实际上.我想要协助的部分是; Caused by: java.lang.VerifyError: org/mockito/cglib/core/ReflectUtils at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167) at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrateg
6 2024-01-30
编程技术问答社区
Apache Wicket-java.lang.NoClassDefFoundError: 无法初始化 net.sf.cglib.proxy.Enhancer 类。
需要有关在运行时发现错误错误的指导.我已经检查了所有类似的答案,但是无法解决我面临的问题. 项目编译,战争文件成功地部署在没有问题的情况下 在运行时 命中第一个URL时,以下堆栈到达. 在我的情况下, cglib作为Apache Wicket IOC的依赖性,这取决于wicketstuff-restannotations. wicketstuff-restannotations在下面提供的我的build.sbt中添加为依赖. 我确实尝试在build.sbt中手动添加cglib依赖项.它在dependencyTree中显示,但在运行时仍然相同的例外 尝试添加cglib-nodep以及依赖关系 我尝试从wicketstuff-restannotations和所有wicket库依赖项中排除cglib,然后手动添加cglib以及cglib-nodep依赖项.仍然同样的问题. stacktrace javax.servlet.ServletException: Fi
2 2023-12-03
编程技术问答社区
Spring 3.1无法加载配置类。
我正在研究具有Spring 3.1.0休息服务的项目.发布. 我正在使用config类加载豆. 如建议的,使用CGLIB 2.2和ASM-3.3罐子. 这在WebSphere 8.5中失败,但异常.但是在Apache Tomcat 7.0中工作. [12/19/12 12:47:26:439 EST] 00000062 webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[dispatcher]: java.lang.IllegalStateException: Cannot load configuration class: com.hps.config.ApplicationConfig at org.springframework.context.annotation.ConfigurationClassPostProce
8 2023-12-03
编程技术问答社区
Java检测类是否是一个代理
是否可以检测一个类是代理( dynamic , cglib 或否则)? 让class A和B实现一个通用接口I.然后,我需要定义签名的例程 public boolean classEquals(Class a, Class b); 使其仅在a.equals(b)或Proxy(a).equals(b)时才评估 true ,其中Proxy(a)表示类型A的动态代理(dynamic,cglib或否则). 在@Jigar Joshi的帮助下,这就是到目前为止的样子: public boolean classEquals(Class a, Class b) { if (Proxy.isProxyClass(a)) { return classEquals(a.getSuperclass(), b); } return a.equals(b); } 问题是它不检测到例如 cgl
2 2023-10-17
编程技术问答社区
Java-动态地创建一个子类
我想编程创建一个子类. 我想我有很少的选择 - javassist,cglib,bcel或asm. 用例是,一个应用程序的内部设备是面向班级的,扩展是基于类的.因此,我不能将单个类作为由外部脚本驱动的多个扩展的基础. 现在 - 我该怎么做?我发现了具有拦截方法调用,现场访问,初始化等的示例,但没有任何子类别. 我想结束一个课程: 有一个我想要的名称. 是一个给定类的(充其量,充其量是)子类 从父类中复制构造函数(或调用super(...)) 最终,我想给它一些注释. 我知道这是可能的,因为各种动态语言集成,例如GroovyClassLoader,都可以做到. 解决方案 使用Javassist非常容易: import javassist.CannotCompileException; import javassist.ClassPool; import javassist.CtClass; import javassist.NotFound
6 2023-10-04
编程技术问答社区
$$和<生成>在Java堆栈跟踪中是什么意思?
我经常得到这样的堆栈(请参阅令人困惑的线的箭头): org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [PRIMARY]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:164) at org.springframework.orm.hibernate5.HibernateT
4 2023-09-28
编程技术问答社区
在@Configuration与@Component类中的自我调用行为
我的问题是关于内部方法调用的AOP春季行为. @Service class Service { @Transactional public void method1() { method2(); } @Transactional public void method2() {} } 如果我们从外部调用Method1(),Method1()将在事务模式下执行,但是正如它在内部方法2()时,Method2()内部的代码不会在交易模式下执行. 并行,对于配置类,通常我们应该具有相同的行为: @Configuration class MyConfiguration{ @Bean public Object1 bean1() { return new Object1(); } @Bean public Object1 bean2() { Obj
14 2023-09-15
编程技术问答社区
在Spring中,为什么POJO上的CGLib会丢失行号?
Spring MVC Web应用程序: 我有一个堆栈跟踪w/o线号(底部显示). 我认为这是由于控制器上运行的CGLIB.但这对我来说很奇怪,实际例外发生在ServerBatchRemoteRequestAcceptor中,ServerBatchRemoteRequestAcceptor是一个未注入的pojo,而不是控制器.它仅在控制器对象中创建. 示例: @Controller class MyController { MyPojo pojo = new MyPojo(); @RequestMapping("myaction") public void doMyAction(){ pojo.methodToCauseNullPointerException() } } java.lang.NullPointerException at mycommons.services.batchremoteprocess
14 2023-09-14
编程技术问答社区
用Mockito用@Transactional方法模拟类
我有一个服务,一个包含@Transactional方法的bean: public class InMessageService { ... @Transactional public boolean retryInMessage(String messageId) { ... } } 用于测试,我尝试使用Mockito嘲笑该服务: @Bean @Primary public InMessageService inMessageService() { return Mockito.mock(InMessageService.class); } 我开始测试时的结果是以下例外: Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class somePackag
8 2023-09-12
编程技术问答社区
设置JVM选项以避免org.springframework.cglib.core.ReflectUtils$1的非法反射性访问错误。
我使用Spring Boot 2.0.0.RC1,JDK 9.0.4,Intellij Ideas 2017.3.4 Ultimate,Gradle 4.5.1. Spring Boot RC1版本(严格,Spring Framework 5.0.3.3.Release)有一个已知问题: https://jira.spring.io/browse/spr-15859 ,我也在这里看到它 https://github.com/dsyer/spring-boot-java-9#create-a-a-spring-boot-boot-application 春季开发人员建议 您可以通过添加-illegal -access =拒绝到命令来关闭此问题 线(Java 9中的默认值是允许的). 我选择菜单帮助\编辑自定义VM选项... ,然后在文件的最后一行中添加新选项. 然后我捕获错误 > Unrecognized option: -illegal-access=deny
30 2023-09-12
编程技术问答社区
Spring Batch@StepScope无法生成CGLIB子类
编辑 我创建了一个复制问题的测试项目.可以在 https://github.com/tomverelst/tomverelst/tomverelst/test-batch . 首先运行maven命令exec:java启动HSQL数据库.然后,您可以运行Junit Test MigrationJobConfigurationTest加载Spring应用程序上下文. 原始问题 启动我的春季批处理应用程序时,当春季加载我的作业配置时,我会得到以下例外: Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy34]: Common causes of this problem include using a final class or a non-vi
2 2023-09-12
编程技术问答社区
Easymock3 Spring4.0.0.RELEASE cglib兼容性
我遵循给出的建议在这里在Spring尝试一些单位测试AOP启用方法.但是,我怀疑在弹簧核和CGLIB-NODEP-2.2.jar彼此冲突下重新包装的CGLIB类,导致我的班级被classloader加载两次.这会导致以下错误: Caused by: java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: 工具: easmock-3.0(使用CGLIB-NODEP-2.2.2.JAR及依赖性) Spring-X-4.0.0.0.Release(带有版本的CGLIB?类) junit-4.8.1 不明显地,不包括及物cglib-nodep依赖性 - 包括非弦aop的所有测试也开始失败. 我尝试了发布的答案,也在这里也是:清理目标文件夹,然后再进行测试,但没有成功.
16 2023-09-12
编程技术问答社区
CGLIB代理和JDK代理之间的不同之处
baeldung 有这一部分: 这个限制匹配的连接点,其中bean引用为一个 给定类型的实例,而 target 限制与加入 目标对象是给定类型的实例.这 当Spring AOP创建基于CGLIB的代理时,以前的作品 创建基于JDK的代理时使用后者.假设 目标类实现接口: public class FooDao implements BarDao { ... } 在这种情况下,Spring AOP将使用基于JDK的代理,我们应该 使用目标PCD,因为代理对象将是 代理类并实现Bardao接口: @Pointcut("target(com.baeldung.pointcutadvice.dao.BarDao)") 另一方面,如果foodao无法实现任何接口,则 ProxyTargetClass属性设置为true,然后代理对象将 成为Foodao的子类,我们可以使用此PCD: @Pointcut("this(com.baeldung.pointcutad
4 2023-09-12
编程技术问答社区
如何查看Bytecode Spring Framework生成的代理类?
在Spring AOP/ASM库中是否有API,可让我们读取Spring生成的代理类的字节码表示. 在我的测试代码中,我可以访问类文件. private static void printClassBytes(String classFilePath) throws Exception{ TraceClassVisitor visitor = new TraceClassVisitor(new PrintWriter(System.out)); ClassReader reader = new ClassReader(new FileInputStream(new File("/xxx/asm_source/asmtest-0.0.1-SNAPSHOT/com/test/asm/Application.class"))); reader.accept(visitor, 0); } 但是在我的应用程序中,代理类是使用运行时的Spring Inte
6 2023-09-12
编程技术问答社区
春季cglib代理 - 类变量变为null
我有一个过滤服务,其方法是通过该方面进行的.例如,我会给您一个我有问题的代码 @Service public class FilterService extends AbstractService { private static final Logger log = LoggerFactory.getLogger(FilterService.class); @Autowired //Proxy to profiling class private FilterService self; private final ItemsRepository itemsRepository; private final Map enumFilters; public FilterService(ReadWriteLock
12 2023-09-12
编程技术问答社区
服务Bean在spring cglib代理中注入失败
我有注释 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface PartnerProxy { } 和建议 @Component @Aspect public class AnnotationAdvice { @Around("@annotation(PartnerProxy)") public Object pc(ProceedingJoinPoint joinPoint) throws Throwable { return joinPoint.proceed(); } } 和我想代理的豆子 public class OuterServiceProxy { private IRoomStatusService service; ... another properties String
34 2023-09-12
编程技术问答社区
错误:java.lang.NoSuchMethodError:org/springframework/asm/ClassVisitor.<init>(I)V
我的POM中有这两个依赖性,我认为创建了这个问题,但是我尝试了许多不同的方式和更新版本,但对我没有任何帮助.有人可以帮忙吗? pom.xml org.springframework spring-aop 4.2.0.RELEASE cglib cglib 2.2 解决方案 解决您的问题的解决方案 似乎在管理您的依赖时发生了罐子冲突. 在春季4.2.0中,classVisit
12 2023-09-12
编程技术问答社区
在Spring中混合使用JDK和CGLIB代理机构
我有一个带有Spring的应用程序,我在某些地方使用AOP.由于我想在接口级别使用@transactional注释,因此我必须允许Spring创建JDK代理.因此,我不会将代理 - target-class 属性设置为true.另一方面,我不想为我想要建议的每个类创建一个接口:如果接口没有意义,我只想拥有实现,而Spring应该创建一个CGLIB代理. 正如我所描述的那样, 一切正常.但是我想在界面中有其他一些注释(由我创建),并被实现类"继承"(就像 @transactional one一样).事实证明,我在春季对AOP的内置支持无法做到这一点(至少在研究后我无法弄清楚如何做.因此,该课程不建议). 因此,我决定实现自己的 pointcut 和 Interceptor ,允许其他方法注释进行界面.基本上,我的点尺寸在方法上寻找注释,直到找不到类似于类或其超类实现的接口的相同方法(相同的名称和参数类型). . 问题是:当我声明将正确应用此点键/拦截器的defaultAdv
4 2023-09-12
编程技术问答社区