Я отлаживаю код Java
, вызванный из Matlab
, и получаю исключение:
Java exception occurred:
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
как может быть, что библиотечный класс не имеет библиотечного метода?
ОБНОВЛЕНИЕ
Matlab использует Java7
. Код, который я вызываю, был скомпилирован для Java8
и содержит синтаксис
for (Tag t : matrix.keySet()) {
то есть Java8
-специфический. Хотя, как утверждается, она должна быть бинарно совместима с Java7
, иначе не было бы смысла делать многие компромиссы в Java8
.
keySet
возвращаетSet<K>
на свою подпись, а в Java 8 возвращаетConcurrentHashMap.KeySetView<K,V>
. - person Zircon   schedule 15.12.2017Java8
бинарно совместим сJava7
? Здесь мы видим, что я не могу использоватьJava8
jar наJava7
машине. - person Dims   schedule 15.12.2017Java7
на машинеJava8
, но не кодJava8
на машинеJava7
. stackoverflow.com/questions/4692626/ а> - person Adam Siemion   schedule 15.12.2017