【问题标题】:java.lang.NoSuchMethodError: stub class initialization failedjava.lang.NoSuchMethodError:存根类初始化失败
【发布时间】:2015-01-15 01:53:26
【问题描述】:

我正在开发一个使用 Eclipse Juno ver - 1.5.0 的 Web 应用程序,该应用程序托管在 Tomcat 7.0 上。此外,该应用程序还使用远程方法调用。

在代码中进行更新后,我清理了 tomcat 目录。这导致从以下目录中删除了一些基本的 .class 文件

.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/trusteddataaggwebsite/WEB-INF/classes

显然重建项目并没有恢复被删除的文件。所以,我手动恢复了丢失的 .class 文件。虽然丢失的文件之一是 TSDAVis_Stub.class 文件。

因此,我使用 rmic 命令重新编译了存根以生成存根。但是在执行时我收到以下错误

java.lang.NoSuchMethodError: stub class initialization failed
trusteddataagg.TSDAVis_Stub.<clinit>(Unknown Source)
sun.misc.Unsafe.ensureClassInitialized(Native Method)
sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
java.lang.reflect.Field.getFieldAccessor(Field.java:899)
java.lang.reflect.Field.getLong(Field.java:528)
java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1614)
java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
java.security.AccessController.doPrivileged(Native Method)
java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
java.rmi.Naming.lookup(Naming.java:84)
ParaselectionServlet.doPost(ParaselectionServlet.java:128)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我知道代码描述有点模糊,但如果有人能解释一下,那将非常有帮助

java.lang.NoSuchMethodError: stub class initialization failed

更具体地说,如果此错误与 RMI 或某些配置问题有关。

谢谢。

【问题讨论】:

  • 再次清理并重建所有内容,这次停止并重新启动注册表。还请显示您使用的rmic 命令。
  • 我确实尝试过清理和重建。我什至从 Eclipse 中删除了该项目并重新导入。同样,我从 tomcat 中删除了它,然后重新添加并重新发布了该项目。 RMI 注册表也是如此。它还没有解决问题。
  • 对于 rmic 命令:我在服务器项目的 src 文件夹中使用了 javac *.java 然后,我使用了:rmictrusteddataagg.TSDAVis 它编译时没有标记任何错误。然后我将生成的 stub.class 文件移动到问题中列出的元数据目录中。

标签: java eclipse tomcat rmi


【解决方案1】:

将项目迁移到另一台计算机后,该问题已得到解决。显然,该错误与 RMI 相关的不正确性无关。虽然,错误的原因以及重新构建项目后仍未解决的原因仍然未知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-08
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2012-11-17
    • 2017-12-10
    • 2018-09-17
    相关资源
    最近更新 更多