Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在什么情况下ByteBuddy代理类将无法访问自己定义的私有字段?_Java_Byte Buddy - Fatal编程技术网

Java 在什么情况下ByteBuddy代理类将无法访问自己定义的私有字段?

Java 在什么情况下ByteBuddy代理类将无法访问自己定义的私有字段?,java,byte-buddy,Java,Byte Buddy,我正试图理解这个难以理解的错误消息: java.lang.IllegalStateException: Cannot access private final com.foo.TestMethodInvoker$Foo com.bar.$MyProxy.methodHousing from class com.bar.$MyProxy at net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Location$ForExp

我正试图理解这个难以理解的错误消息:

java.lang.IllegalStateException: Cannot access private final com.foo.TestMethodInvoker$Foo com.bar.$MyProxy.methodHousing from class com.bar.$MyProxy
at net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Location$ForExplicitField.resolve(MethodCall.java:2406)
    at net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Factory.make(MethodCall.java:2444)
    at net.bytebuddy.implementation.MethodCall$Appender.<init>(MethodCall.java:3500)
    at net.bytebuddy.implementation.MethodCall.appender(MethodCall.java:676)
    at net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation.compile(MethodRegistry.java:233)
    at net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation.compile(MethodRegistry.java:205)
    at net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Prepared.compile(MethodRegistry.java:740)
    at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:218)
    at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:204)
    at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3595)
    at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator.make(DynamicType.java:3819)
java.lang.IllegalStateException:无法从类com.bar.$MyProxy.MethodInvoker访问私有final com.foo.TestMethodInvoker$foo com.bar.$MyProxy.methodHousing
在net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Location$ForExplicitField.resolve(MethodCall.java:2406)
在net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Factory.make(MethodCall.java:2444)
位于net.bytebuddy.implementation.MethodCall$Appender。(MethodCall.java:3500)
位于net.bytebuddy.implementation.MethodCall.appender(MethodCall.java:676)
net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation.compile(MethodRegistry.java:233)
net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation.compile(MethodRegistry.java:205)
net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Prepared.compile(MethodRegistry.java:740)
net.bytebuddy.dynamic.scaffold.subclass.subclass.dynamicTypeBuilder.make(subclass dynamicTypeBuilder.java:218)
在net.bytebuddy.dynamic.scaffold.subclass.subclass-dynamictypebuilder.make(subclass-dynamictypebuilder.java:204)
位于net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3595)
位于net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator.make(DynamicType.java:3819)
我有一个单元测试(
TestMethodInvoker
),它定义了一个名为
Foo
publicstatic
嵌套类

我的ByteBuddy配方定义了一个名为
methodHousing
私有final com.foo.TestMethodInvoker$foo
字段

我使用
FieldAccessor.of
对该字段执行各种操作。(或者我正在努力!)

错误消息似乎告诉我,我的代理类无法访问自己的私有字段(!)


在什么情况下会是这样?或者我做错了什么?

您遇到了一个错误。这将在1.10.14中发布


如果同时希望避免此错误,请避免将显式字段引用作为参数,但应提供一个解析字段的匹配器。

我建议发布代码以再现错误。如果你当时得到了真实的答案,我不会感到惊讶。