,在Java應用程序非常簡單的代碼,我的Tomcat 7的OpenJDK的Java下運行1.7Java應用程序無處不在 - 我有版本問題嗎?我有以下
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;
}
});
請原諒那些LOGGER
消息,但它是唯一的辦法,我追查問題的由來。由於我正在執行GET請求,程序只是進入無人區域,請求正在被吞噬。
我已經在調試模式下啓動了Tomcat,以便從Eclipse中遠程調試應用程序。結果是它達到.sort()
,但它永遠達不到我執行的compare()
。所以我收到的最後一條調試消息是sorting ...
就是這樣。
該機我從Java具有8部署此安裝
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
但父pom.xml中設置爲Java 7:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- etc. -->
</plugins>
</build>
這看起來像我有一個問題與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)
爲什麼我會得到一個NoSuchMethodError
例外嗎?
「...進入無人地帶」 - 這是否意味着您正在進入暫停狀態?該名單有多大? – Fildor
@Fildor該列表相當小,所以絕對不是它花的時間太長。 – displayname
在比較器中調用'.getAnnotation()'之前,您是否嘗試過使用LOG?只是爲了確保它不是那種「懸掛」的方法,並且實際上輸入了比較器代碼。 – Fildor