Java应用程序无处可去——我是否有版本控制问题?
我在一个Java应用程序中有以下非常简单的代码,我在Tomcat7和OpenJDKJava1.7下运行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
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)