我有Byte Buddy作为代理运行,它成功地拦截了我的绝大多数代码库,顺便说一下,这是相当大的!虽然有几个异常值,我不能测量,我在下面记录,希望你能知道答案!
1.CGLIB生成的类
Spring生成了一些额外的类,它们与我的类同名,但在末尾附加了“$$EnhancerByCglib$$”
,这些会导致错误。我得到的错误是:
java.lang.IllegalStateException: Cannot resolve type description for com.mycompany.MySpringBean$$EnhancerByCGLIB$$ee9d3c37_2
at net.bytebuddy.pool.TypePool$Resolution$Illegal.resolve(TypePool.java:152)
at net.bytebuddy.pool.TypePool$LazyFacade$LazyResolution$LazyTypeDescription.resolve(TypePool.java:3158)
at net.bytebuddy.pool.TypePool$LazyFacade$LazyResolution$LazyTypeDescription.getModifiers(TypePool.java:3238)
at net.bytebuddy.ByteBuddy.rebase(ByteBuddy.java:697)
.and(not(nameContains("EnhancerByCGLIB")))
2.打包私密类和私密类
我看到的另一个问题是检测包私有
或私有类
。
Package Private
代码如下所示:
abstract class BaseBean {
Object methodA(final String customerNumber){}
}
Caused by: java.lang.IllegalAccessException:
Class net.bytebuddy.implementation.LoadedTypeInitializer$ForStaticField cannot
access a member of class com.mycompany.BaseBean with modifiers "public static"
public class Object A {
//variables & methods...
private class ObjectB {}
}
Caused by: java.lang.IllegalAccessException:
Class net.bytebuddy.implementation.LoadedTypeInitializer$ForStaticField cannot
access a member of class com.mycompany.ObjectA$ObjectB with modifiers "public static"
Byte Buddy instrument可以打包私有
或私有类
吗?
3.静默失败
这只是一个一般性的问题,但是否可以指示Byte Buddy在每个类上默默无闻地失败?这样,任何此类错误都不会阻止应用程序启动,也不会阻止Byte Buddy尽可能多地检测。
package com.mycompany;
public interface InterfaceA{
Object provideAccess(final String id);
}
package com.mycompany;
public abstract class BaseBeanA implements InterfaceA {
//some general helper methods
}
package com.mycompany;
public abstract class BaseBeanB extends BaseBeanA {
//some specific helper methods
}
package com.mycompany;
public class BeanImpl extends BaseBeanB {
protected Object provideAccess(final String id) {
}
}
这会导致检测BaseBeanB时出现以下错误:
java.lang.IllegalArgumentException:无[protected void java.lang.Object.Finalize()抛出java.lang.Throwable,public final native void java.lang.Object.Wait(长)抛出java.lang.InterruptedException,public final void java.lang.Object.Wait()抛出java.lang.InterruptedException,public final void java.lang.Object.Wait(长,int)抛出用于从公共抽象对象com.mycompany.interface.ProvideAccess(java.lang.String)委派
1.CGLIB生成的类
你的解决方案是正确的。事实上,按名称指定类对性能总是有好处的。例如,如果您可以排除整个包,那么Byte Buddy甚至可以丢弃类,而无需解析类文件,因为类名是单独可用的。
cglib生成的类的检测失败的原因是这些类没有可用的字节代码。
3.静默失败
如果检测失败,则总是将此失败报告给AgentBuilder.Listener
。除此之外,失败没有任何影响,因为ClassFileTransformer
API暗示了它。您是否观察到传递的任何异常?您可能还希望查看侦听器AgentBuilder
的最新版本,在该版本中,侦听器AgentBuilder
进行了重大重构。
4.公共抽象类中的公共方法
我试图测试一个基于Spring引导的Restendpoint。代码能够返回预期的输出,但测试失败,错误如下: 已解析[org.springframework.http.converter.HttpMessageNotWritableException:预设内容类型为“null”的[class java.util.LinkedList]没有转换器 对此有任何想法都将不胜感激! 下面是相同的代码: 控
我一直在努力使用REST API响应处理Firebase响应。问题是我不想在Firebase中使用Android的libs,而是使用原始rest api。长话短说,Firebase的回应是: 改装接口: Gson Builder、改装Builder和RxJava: 执行此操作时,我会得到错误: 为了迭代来自服务器的对象列表,是否可以使用RxJava解决这个问题?从现在起,我期待一个数组,但fire
我试图用codeception运行一些测试,当我尝试测试表单时,总是失败,我不知道为什么。和其他人一样,他们都通过了。测试代码如下: 当我用命令运行测试时/vendor/bin/run-vvv--html--debug我有以下日志: 接受。一套yml就是这个: 演员:验收员 模块: 什么是错的?我想要的是测试表格,看看下一页写的假期,为什么一些测试通过了,一个简单的表格没有?。你能帮我个忙吗?
我正在尝试使用GPU而不是CPU运行dl4j模型。该模型使用CPU运行良好。所以我决定尝试CUDA来利用我的GPU。我遵循了这里描述的每个步骤,对于CUDA安装,我按照NVIDIA的说明从这里安装CUDA工具包。代码编译正常,但出现错误: 我的项目是使用IntelliJ上的Maven创建的。所有的依赖项都是可以的,否则代码将无法编译。必须缺少某些后端依赖项、库或安装。可能是版本不兼容的问题 消息为
主要内容:分配矩阵,请求矩阵如果在资源分配图中形成一个循环,其中所有资源都有单个实例,则系统将死锁。 在具有多实例资源类型的资源分配图的情况下,周期是死锁的必要条件,但不是充分条件。 以下示例包含三个进程P1,P2,P3和三个资源R2,R2,R3。 所有资源都有单个实例。 如果我们分析图表,那么我们可以发现图表中存在一个循环,因为系统满足所有四种死锁条件。 分配矩阵 分配矩阵可以通过使用系统的资源分配图来形成。 在分配矩阵中