Java应用程序无处可去——我是否有版本控制问题?

Java应用程序无处可去——我是否有版本控制问题?,java,maven,tomcat,Java,Maven,Tomcat,我在一个Java应用程序中有以下非常简单的代码,我在Tomcat7和OpenJDKJava1.7下运行 List<AnnotationNode> children = parent.getChildren(); LOGGER.debug("sorting ..."); children.sort(new Comparator<AnnotationNode>() { @Override public int compare(AnnotationNode

我在一个Java应用程序中有以下非常简单的代码,我在Tomcat7和OpenJDKJava1.7下运行

List<AnnotationNode> children = parent.getChildren();

LOGGER.debug("sorting ...");

children.sort(new Comparator<AnnotationNode>() {
    @Override
    public int compare(AnnotationNode o1, AnnotationNode o2) {

        int result;
        try {
            Annotation a1 = o1.getAnnotation();
            Annotation a2 = o2.getAnnotation();             
            LOGGER.debug("compare ..");
            result  = a1.getStart() - a2.getStart();
        } catch(Exception e) {
            LOGGER.debug("huh??", e);
            result =0;
        }

        return result;
    }           
});
但是父pom.xml是为Java 7设置的:


org.apache.maven.plugins
maven编译器插件
1.7
1.7
这看起来像是我在这里遇到了Java版本的问题,尽管我不确定这个问题发生在哪里。我的应用程序可能是用错误的编译器构建的吗

你知道我怎样才能解决这个问题吗


更新:

/var/log/tomcat7/catalina.out
中的最后一条消息说:

SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NoSuchMethodError: java.util.List.sort(Ljava/util/Comparator;)V
    at at.company.enrichment.processor.AnnotatedDocumentTree.addNode(AnnotatedDocumentTree.java:104)
    at at.company.enrichment.processor.AnnotatedDocumentTree.initialize(AnnotatedDocumentTree.java:70)
    at at.company.enrichment.processor.AnnotatedDocumentTree.<init>(AnnotatedDocumentTree.java:41)
    at at.company.enrichment.processor.DocumentProcessor2.process(DocumentProcessor2.java:112)
严重:MappableContainerException中包含的异常无法映射到响应,并重新抛出到HTTP容器
java.lang.NoSuchMethodError:java.util.List.sort(Ljava/util/Comparator;)V
位于at.company.enrichment.processor.AnnotatedDocumentTree.addNode(AnnotatedDocumentTree.java:104)
位于at.company.enrichment.processor.AnnotatedDocumentTree.initialize(AnnotatedDocumentTree.java:70)
位于at.company.enrichment.processor.AnnotatedDocumentTree。(AnnotatedDocumentTree.java:41)
位于at.company.enrichment.processor.DocumentProcessor2.process(DocumentProcessor2.java:112)

为什么这里会出现
NoSuchMethodError
异常?

我猜在tomcat上部署web应用程序时,缺少对您正在使用的库的依赖关系(您是否在使用ASM?)

更准确地说,我需要查看tomcat的完整日志和类的导入。

在Java8中,
List#sort(Comparator)
方法是新的。如果您的Tomcat使用Java7,它将找不到该方法。您可以使用Java 7和Java 8中存在的Java 7版本
Collections#sort(Collection,Comparator)


一般来说,最好使用您打算运行的相同Java版本编译代码。在这种情况下,编译器将给出错误,而不是运行时。

“…进入无人区”-这是否意味着您正在运行超时?该列表有多大?@Fildor该列表相当小,因此肯定不是因为它花费的时间太长。在比较器中调用
.getAnnotation()
之前,您是否尝试过放置日志?只是为了确保不是该方法“挂起”并且实际输入了比较器代码。或者将其重写为Collections.sort(children,comp);它与Java一起存在7@eckes如果你提供一个答案,我很乐意接受:)那会是什么图书馆?这只是我调用的
List#sort
,但是我在哪里可以获得tomcat的日志呢?实际上,您在排序方法中使用的是AnnotationNode和Annotation,因此如果类加载器无法加载这些类,它可以解释timeouttomcat日志:try in/var/log/tomcat(如果使用linux)明白了-我似乎得到了一个
NoSuchMethodError
-知道为什么会这样吗?这看起来很奇怪..或者在tomcat的主目录中,有一个日志目录;查找catalina.out文件谢谢,这确实是问题所在!
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NoSuchMethodError: java.util.List.sort(Ljava/util/Comparator;)V
    at at.company.enrichment.processor.AnnotatedDocumentTree.addNode(AnnotatedDocumentTree.java:104)
    at at.company.enrichment.processor.AnnotatedDocumentTree.initialize(AnnotatedDocumentTree.java:70)
    at at.company.enrichment.processor.AnnotatedDocumentTree.<init>(AnnotatedDocumentTree.java:41)
    at at.company.enrichment.processor.DocumentProcessor2.process(DocumentProcessor2.java:112)