java.lang.NoClassDefFoundError:在匿名内部类中

one*_*ack 8 java inner-classes

我在Linux Red Hat上使用sun/oracle JVM 1.6_23在VMWare服务器中运行此代码.

有些时候,JVM似乎无法访问我的匿名内部类.

我的classpath很好,因为它可以工作一段时间.

我得到的只是这样的错误:

java.lang.NoClassDefFoundError:com/mycompany/impl/MyClassImpl$1 at com.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());
            }
        });
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

one*_*ack 4

最后,我认为我们可能已经找到了问题所在。

我们在 jetty 上运行此代码,并使用 .war 文件的自动部署。默认情况下,jetty 使用 java.io.tmpdir 来部署 .war 文件。

我们的问题只出现在 Linux 上,而且大多是在清晨(当第一个办公室工作人员使用该应用程序时)。

原因是晚上清理 /tmp(由我们服务器上的 LOGROTATE 命令执行)。

经验法则:永远不要使用 /tmp 太长时间,并让 jetty 将 war 部署在您自己的目录中。

感谢大家