UnsupportedClassVersionError | |
java: error: release version 5 not supported | |
unmappable character (0x8F) for encoding windows-1252 | |
Другие статьи о Java |
Введение
UnsupportedClassVersionError
Error: A JNI error has occurred, please check your installation and try again
Exception in thread «main» java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
Agent JVM has terminated. Exit code=1
Эта ошибка часто возникает при использовании
Jenkins
версии 2.357 и выше
с работниками на которых установлена восьмая Java. Проверьте версию Java на хосте работника, если
вы подключаете его напрямую и в
Dockerfile
если вы используете работников в
Docker
что является более новым подходом.
java: error: release version 5 not supported
Эта ошибка говорит о том, что вы используете SDK выше 8 а байткод в
который пытаетесь скомпилировать — версии 5.
После восьмой версии Java байткод пятой версии уже не поддерживается.
Это одна из причин по которой версия 8 считается наиболее
«стабильной»
Я не советую менять SDK на 8, лучше поменять target bytecode.
В
IntelliJ IDEA
это можно сделать следующим образом
File → Settings → Build, Execution, Deployment → Compiler
→ Target bytecode version → 14
14 выбирать не обязательно, но вам явно будет нужно что-то выше 5
error: unmappable character (0x8F) for encoding windows-1252
Если у вас в коде комментарии на русском и при компиляции появляется
error: unmappable character (0x8F) for encoding windows-1252
Программирование на Java | |
Установка Java | |
Intellij | |
Компиляция и запуск Java кода | |
final | |
switch | |
Определить тип переменной | |
Генератор случайных чисел | |
Импорт из других классов | |
Ошибки | |
Maven | |
JUnit |
Konstantin Valeev
Как правильно компилировать код с кириллицей? У меня при компиляции возникает error: unmappable character for encoding Cp1252, пробовал добавлять -encoding=»UTF-8″ — javac не принимает параметр.
Сергей Алексеенко
Здравствуйте.
Было бы хорошо увидеть пример того, что Вы пытаетесь скомпилировать.
Java нормально работает с кириллицей, как с текстом. А вот код должен быть обязательно латиницей. Попробуйте сменить кодировку файла, который пытаетесь скомпилировать, в редакторе, до того как скормите его javac-у.
0
Konstantin Valeev
Компилирую код, который вы приложили к уроку, ничего кроме:
public class Car {
static int speed;
public static void main(String... args) {
Car ta4ka = new Car();
System.out.println("speed в хипе при создании объекта = " + ta4ka.speed); // 0
ta4ka.setSpeed(12); // Вызываем конкретную функцию(метод) из новосозданого объекта
// Значение хранится в фрейме в переменной newSpeed
}
public void showSpeed() { // выводит значение из хипа по ссылке this
System.out.println("speed в хипе на момент вызова 'showSpeed()' = " + this.speed);
}
public void setSpeed(int newSpeed) { // принимаем значение 12. newSpeed это переменная объявленная внутри метода --> хранится в стеке фрейма метода
this.speed = newSpeed; // записываем по this-ссылке в хип значение из стека метода setSpeed
showSpeed();// выводим на экран значение из хипа // 12
newSpeed = 8;// записали новое значение в стеке в фрейме метода setSpeed
System.out.println("переменная newSpeed в фрейме метода setSpeed в стеке = " + newSpeed); // 8
// присваиваем переменной speed новое значение = 3
speed = 3; // В стеке нет такой переменной, потому значение будет записано в хип!
System.out.println("Java сама добавила this перед именем 'speed' и записала новое значение speed в хип = " + this.speed); // 3
setSetSpeed(newSpeed); // передаем значение newSpeed = 8
}
public void setSetSpeed(int speed) { // теперь и только теперь и в фрейме метода setSetSpeed в стеке есть своя переменная c именем speed!
System.out.println("Значение speed в хипе = " + this.speed); // 3
speed = speed;//в стеке speed сама себя переприсваивает.
System.out.println("переменная speed в фрейме стека = " + speed); // 8
this.speed = speed; // присваиваем значение speed из фрейма значению speed в хипе!
System.out.println("Значение speed в хипе заданое уже методом setSetSpeed = " + this.speed); // показываем speed из хипа. // 8
}
}
Sublime пишет что кодировка UTF-8.
0
Сергей Алексеенко
У меня этот код компилится и под Windows и под Ubuntu.
А какая версия ОС у вас (какого года)? Какая версия java, javac?
0
Konstantin Valeev
Microsoft Windows 10 Enterprise
10.0.17763 N/A Build 17763
java version «1.8.0_221»
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
javac 1.8.0_221
0
Сергей Алексеенко
Что ж.
Это определенно проблема в самой операционной системе.
Скорее всего в настройках региональных стандартов нужно выставить «язык программ, не поддерживающих Юникод» с Английского на Русский. Но придется менять язык системы.
Есть возможность исправить проблему кодировки через реестр:
Запускаем regedit
(Win + R —> regedit) и по пути HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage
находим ключ ACP
в котором нужно поменять значение (value data) с 1252 на 1251.
Потребуется перезагрузка системы.
UPD. В зависимости от качества дистрибутива системы, возможно, поможет установка дополнительных языковых пакетов через магазин или просто в настройках системы.
0
Konstantin Valeev
Компьютер рабочий, прав на такое нет. Если убрать все русские комментарии — код компилируется.
Проблема понятна, спасибо!
0
Андрей Абрашкин
Сергей Алексеенко, у меня в реестре всё так, как вы рекомендуете и в настройках региональных стандартов тоже, однако проблему это не решает. Ошибка есть.
0
Андрей Абрашкин
Не знаю, в чём было дело, но конкретно в моём случае, компилятору не нравилась заглавная буква И. Причем не важно, в каком месте я её ставлю. Исправил на маленькую «и» и всё скомпилировалось.
0
Сергей Алексеенко
Очевидно javac ничего не знает про «и» в верхнем регистре в UTF-8. И этот баг с буквой «И» я не смог победить в javac.
Но нашел еще два способа как обойти в общем проблему с кодировкой:
1) Создать в Sublime текстовый файл в нужной кодировке, а потом туда скопировать код. Как создать: New File
, потом file —> Save vith Encoding
и сохраняем файл в нужной кодировке. И только потом копируем код в этот сохраненный файл. Сохраняем после копирования. Тестируем.
2) Зайти в настройки региональных стандартов и нажать там одну галочку: скрин настроек.
В результате применения второго способа у меня пропала козябра в WindowsPowerShell, при исполнении данного кода.
Побочных ефектов в других программах я пока не заметил.
0
Андрей Абрашкин
Сергей Алексеенко, первый способ — это самое первое, что я попробовал, но, к сожалению, не помогло. А вот крыж из второго способа, видимо, из 10ки, на win7 отсутствует. Спасибо за советы! Впервые вижу столь оперативную обратную связь)
1
Сергей Алексеенко
Андрей Абрашкин, первый способ тоже должен работать. Нужно внимательно произвести описанные действия. Там важно сохранять файл на каждом этапе. Можно еще включить отображение кодировок в Sublime: в настройках пользователя добавить «show_encoding»: true. И ни в коем случае не впечатывать туда «И». ))
0
Андрей Абрашкин
Сергей Алексеенко, ааа, не впечатывать «И»))) Тогда да, тогда сорри, недопонял, тогда всё работает! Без «И»)) Честно говоря, Sublime мне как-то не зашёл… Давно правда это было. Может сейчас изменится мнение, но я пока на Notepad++ и AkelPad сижу. В Npp вкладки и подсветка синтаксиса. В AkelPad удобство смены кодировки и работы с текстом больших размеров. Надо бы снова присмотреться к Sublime…
0
в настоящее время я работаю на Java-проект, который выдает следующее предупреждение при компиляции:
/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
[javac] String copyright = "� 2003-2008 My Company. All rights reserved.";
Я не уверен, как так будет отображать символ до даты, но он должен быть символом авторских прав и отображается в предупреждении как знак вопроса в алмазе.
стоит отметить, что символ отображается в выходном артефакте правильно, но предупреждения являются помехой, и файл, содержащий этот класс, может однажды коснуться текста редактор, который неправильно сохраняет кодировку…
Как я могу ввести этот символ в строку «copyright», чтобы компилятор был доволен, и символ сохраняется в файле без потенциальных проблем с повторным кодированием?
10 ответов
используйте формат escape «uxxxx».
по данным Википедия, символ авторского права-unicode U + 00A9, поэтому ваша строка должна гласить:
String copyright = "u00a9 2003-2008 My Company. All rights reserved.";
попробовать с:
javac-кодировка ISO-8859 — 1 имя_файла.java
Если вы используете Maven, установить <encoding>
явно в конфигурации плагина компилятора, например,
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
поместите эту строку в файл yor .gradle над Java conf.
apply plugin: 'java'
compileJava {options.encoding = "UTF-8"}
большую часть времени эта ошибка компиляции происходит при компиляции файла unicode(UTF-8)
javac -encoding UTF-8 HelloWorld.java
а также вы можете добавить этот параметр компиляции в свою IDE
пример: Intellij idea
(Файл>настройки>компилятор Java) добавить в качестве дополнительного параметра командной строки
-кодировка : кодировка
Задайте имя кодировки исходного файла, например EUC-JP и UTF-8.. Если-encoding не указан, конвертер платформы по умолчанию используемый. (DOC)
это сработало для меня —
<?xml version="1.0" encoding="utf-8" ?>
<project name="test" default="compile">
<target name="compile">
<javac srcdir="src" destdir="classes"
encoding="iso-8859-1" debug="true" />
</target>
</project>
Если вы используете eclipse (Eclipse может поставить код utf8 для вас даже вы пишете символ utf8. Вы увидите обычный символ utf8 при программировании, но фон будет кодом utf8);
- выберите проект
- щелкните правой кнопкой мыши и выберите свойства
- выберите ресурс on Панель Ресурсов(вверху правого меню, которое открылось после 2.)
- вы можете ознакомиться в Панель Ресурсов, Кодировка Текстового Файла, выберите другой, который вам нужен
П. С. : это будет хорошо, если вы статическое значение в коде. Например, String test = «IIIIIııııııççççç»;
У меня была та же проблема, где индекс символов, сообщенный в сообщении об ошибке java, был неправильным. Я сузил его до символов двойной кавычки непосредственно перед сообщаемой позицией, являющейся шестнадцатеричной 094 (отмена вместо кавычки, но представленная как цитата) вместо шестнадцатеричной 022. Как только я поменялся на вариант hex 022, все было в порядке.
Если используется сборка Maven из командной строки, можно также использовать следующую команду:
mvn -Dproject.build.sourceEncoding=UTF-8
91 / 85 / 27 Регистрация: 29.10.2016 Сообщений: 928 |
|
1 |
|
20.05.2020, 19:34. Показов 9468. Ответов 6
Добрый вечер, при компиляции java файла в консоли бьет ошибку java:38: error: unmappable character for encoding Cp1251. Если запускать проект через IDE, в моем случае netbeans, все работает нормально. В чем проблема может быть?
__________________
0 |
Нарушитель 14040 / 8228 / 2485 Регистрация: 21.10.2017 Сообщений: 19,708 |
|
20.05.2020, 21:29 |
2 |
В кодировке.
0 |
91 / 85 / 27 Регистрация: 29.10.2016 Сообщений: 928 |
|
20.05.2020, 22:29 [ТС] |
3 |
iSmokeJC, ну кодировка файла utf8, а какая нужна?
0 |
Нарушитель 14040 / 8228 / 2485 Регистрация: 21.10.2017 Сообщений: 19,708 |
|
20.05.2020, 22:38 |
4 |
6elka1703, ну в ошибке же написано.
0 |
91 / 85 / 27 Регистрация: 29.10.2016 Сообщений: 928 |
|
20.05.2020, 22:50 [ТС] |
5 |
iSmokeJC, попробовать что, кодировку сменить? Если да то как это сделать?
0 |
Нарушитель 14040 / 8228 / 2485 Регистрация: 21.10.2017 Сообщений: 19,708 |
|
20.05.2020, 23:01 |
6 |
Сообщение было отмечено 6elka1703 как решение РешениеВ cmd набрать chcp 65001
0 |
91 / 85 / 27 Регистрация: 29.10.2016 Сообщений: 928 |
|
21.05.2020, 17:58 [ТС] |
7 |
iSmokeJC, сработало, правда я не понимаю какая разница jvm какая кодировка стоит, ну выводил бы он мне кракозябры ну и ладно, но не давать скомпилировать класс этого я не понимаю
0 |