Ваш Java-файл скомпилирован с другой версией (более поздняя версия компилятора), чем версия (более низкая версия исполнения), которую вы пытаетесь запустить.
Понятно, что классы, скомпилированные с более низкими версиями как ожидается, будут работать в более поздних версиях. Но противоположное (скомпилированное с более высокой версией компилятора и пытающееся запустить его с более низкой версией времени исполнения) иногда невозможно.
Следовательно, вы показываете эту ошибку при попытке выполнить свою программу. Неподдерживаемая версия major.minor x.x
Q: Я создал приложение в Java 7, но когда мои пользователи пытаются его запустить, они получают ошибку Unsupported major.minor version 51.0. Что это значит и что я могу с этим поделать?
A: Если вы скомпилируете приложение с помощью javac в Java 7, то итоговые файлы классов будут иметь номер версии версии 51.0. Версии Java до 7 не распознают этот номер, поэтому вашим пользователям придется перейти на Java 7 до запуска вашего приложения. Если вы не используете Java 7 API, вы можете попытаться скомпилировать ваше приложение с помощью javac -target 1.6, чтобы создать 1.6-совместимый файл класса. Если ваше приложение развернуто с помощью webstart, вы можете указать минимальную требуемую версию. Для получения дополнительной информации см. Документы в Java Web Start и JNLP. Эта проблема исчезнет, как только мы запустим autoupdate для Java 7 для конечных пользователей, в настоящее время имеющих Java 6 на своих рабочих столах. Временная шкала для этого еще не определена, мы хотим дать разработчикам время для разработки любых проблем между их кодом и JDK 7. Сначала
(Источник: oracle.com [/ д0].)
Вероятно, вы переопределили свою функцию «sum» как целочисленный тип данных. Поэтому справедливо сказать вам, что целое число не является чем-то, что вы можете передать диапазону.
Чтобы исправить это, перезапустите свой интерпретатор.
Python 2.7.3 (default, Apr 20 2012, 22:44:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> data1 = range(0, 1000, 3)
>>> data2 = range(0, 1000, 5)
>>> data3 = list(set(data1 + data2)) # makes new list without duplicates
>>> total = sum(data3) # calculate sum of data3 list's elements
>>> print total
233168
Если вы затеняете встроенный sum
, вы можете получить сообщение об ошибке, которое вы видите
>>> sum = 0
>>> total = sum(data3) # calculate sum of data3 list's elements
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
Также обратите внимание, что sum
отлично работает на set
, нет необходимости преобразовывать его в list
В интерпретаторе легко его перезапустить и исправить такие проблемы. Если вы не хотите перезапускать интерпретатор, есть еще один способ его исправить:
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> l = [1,2,3]
>>> sum(l)
6
>>> sum = 0 # oops! shadowed a builtin!
>>> sum(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> import sys
>>> sum = sys.modules['__builtin__'].sum # -- fixing sum
>>> sum(l)
6
Это также полезно, если вам присвоено значение любому другому встроенному, например dict
или list
Это означает, что где-то еще в вашем коде у вас есть что-то вроде:
sum = 0
Что скрывает встроенную сумму (которая является вызываемой) с int (которая isn «т).