更改类后java.lang.NoSuchFieldError

克里斯蒂安·里斯

我今天遇到了一个异常,设法消除了错误。首先,让我给您一个示例代码。

public class Foo () {
    protected String var;
}

public class Bar extends Foo () {
    public String isVarNull() {
        return (this.var == null);
    }
}

这是我的两个示例类。这两个类都位于某个jar中。在这种情况下,一切工作正常(imageine它们是有用的类,并且在某些生产环境中使用)。我现在要做的就是将Varin的类型更改FooInteger

public class Foo () {
    protected Integer var;
}

之后,我编译了类,Foo并用新的替换了Jar中的旧Class-File。当我现在尝试访问该字段var(在isVarNull()类的方法Bar)时,出现此异常:

由以下原因引起的:java.lang.NoSuchFieldError:test / Bar.isVarNull(Bar.java:6)处的test / Bar.var

据我所知,它与该类的字节码有关Bar编译后的类是否“知道”代码中使用的方法/变量的类型?在这种情况下,由于方法的返回类型已更改Bar“知道”var应返回哪种类型并因此引发错误?我非常感谢您提供详细的答案!

亲切的问候

法夸德勋爵

我认为这里的最佳答案可能会有所帮助:NoSuchFieldError Java

但是不要过多地依赖链接,通常的想法是您可能只编译了Foo因此,Foovar类型确实发生了变化,但Bar的想法var应该不变。因此,是的,编译类确实“知道”它们所引用的方法/变量的类型。在这种情况下,Bar仍然认为它正在寻找in中String具名,但是由于找不到,因此您会遇到此错误。我认为,编译两者都应将所有类再次放在同一页面上。varFoo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Java

java.lang.NoSuchFieldError:INSTANCE

来自分类Java

java.lang.NoSuchFieldError:默认

来自分类Dev

java.lang.NoSuchFieldError:反思

来自分类Dev

NullnessChecker错误:java.lang.NoSuchFieldError:释放

来自分类Dev

ScalaFx MouseEvent:java.lang.NoSuchFieldError:返回

来自分类Java

春季:java.lang.NoSuchFieldError:IMPORT_BEAN_NAME_GENERATOR

来自分类Java

java.lang.NoSuchFieldError的:ACCEPT_CASE_INSENSITIVE_VALUES

来自分类Java

“java.lang.NoSuchFieldError的:超级”异常 - 错误的编译器?

来自分类Dev

使用ScalaTest时出现java.lang.NoSuchFieldError

来自分类Java

线程“主”中的异常java.lang.NoSuchFieldError:TRACE

来自分类Java

Spring 3.1 entityManagerFactory java.lang.NoSuchFieldError:NULL错误

来自分类Dev

JSON解析器-java.lang.NoSuchFieldError:defaultReader

来自分类Dev

Eclipse无法启动:java.lang.NoSuchFieldError:url

来自分类Java

java.lang.NoSuchFieldError的:类型LCOM的无静磁场MAXICODE /谷歌/斑马线/ BarcodeFormat; 类LCOM /谷歌/斑马线/ BarcodeFormat;

来自分类Java

线程“主”中的异常java.lang.NoSuchFieldError:JAVA_VENDOR

来自分类Dev

适用于ssm的aws Java sdk提供了java.lang.NoSuchFieldError:SIGNING_REGION

来自分类Dev

Proguard应用程式当机(造成原因:java.lang.NoSuchFieldError:否“ Lcom / facebook / jni / HybridData)

来自分类Java

抖动错误:java.lang.NoSuchFieldError的PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING

来自分类Dev

如何解决此错误:java.lang.NoSuchFieldError:UTF_32BE?

来自分类Dev

JPA:QUERY DSL错误:java.lang.NoSuchFieldError:LIKE_IC

来自分类Java

带有弹性搜索的Spring Boot导致java.lang.NoSuchFieldError:IGNORE_DEPRECATIONS

来自分类Dev

java.lang.NoSuchFieldError:来自Linux终端的带有twilio的DEF_CONTENT_CHARSET

来自分类Java

HTTPClient示例-线程“主”中的异常java.lang.NoSuchFieldError:INSTANCE

来自分类Dev

AWS EMR客户端错误:java.lang.NoSuchFieldError:SIGNING_REGION

来自分类Dev

初始化项目时出现“ java.lang.NoSuchFieldError:ConstraintLayout_Layout_layoutDescription”

来自分类Dev

蜂巢上的Spark错误java.lang.NoSuchFieldError:SPARK_RPC_SERVER_ADDRESS

来自分类Dev

InMemoryClientRegistrationRepository:工厂方法引发异常;嵌套的异常是java.lang.NoSuchFieldError:PASSWORD

来自分类Dev

Android Gradle Sync在Configure Build阶段失败,错误为java.lang.NoSuchFieldError:JAVA_LETTER_OR_DIGIT

来自分类Java

Java应用程序中Mashape Unirest的java.lang.NoSuchFieldError:org.apache.http.message.BasicLineFormatter.INSTANCE

TOP 榜单

热门标签

归档