我在带有 sun/oracle JVM 1.6_23 的 Linux Red Hat 上运行此代码,在 VMWare 服务器内。
一段时间后,JVM 似乎无法访问我的匿名内部类。
我的类路径很好,因为它可以工作一段时间。
我得到的只是像这样的错误:
java.lang.NoClassDefFoundError
:com/mycompany/impl/MyClassImpl$1
atcom.mycompany.impl.MyClassImpl.markAsDeletable
(MyClassImpl.java
:45).
第 45 行是下面的第一行,它找不到我的新谓词
DomaineVO domaineVO = Iterables.find(domainesVO, new Predicate<DomaineVO>() {
@Override
public boolean apply(DomaineVO input) {
return input.getId().equals(domaine.getIdentifier().toString());
}
});
有什么想法吗?
最佳答案
最后,我认为我们可能已经指出了问题所在。
我们在 jetty 上运行这段代码,我们使用 .war 文件的自动部署。 默认情况下,jetty 使用 java.io.tmpdir 部署 .war 文件。
我们的问题只出现在 Linux 上,而且大多发生在清晨(当第一个办公室工作人员使用该应用程序时)。
原因是晚上清理了/tmp(由我们服务器上的 LOGROTATE 命令执行)。
经验法则:切勿长时间使用/tmp,并将 jetty deploy war 放在您自己的目录中。
谢谢大家
关于java.lang.NoClassDefFoundError : in anonymous inner class 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976563/