Eclipse + Linux + PDE-build + cp1251

Rotvik Hitrson 2012 M01 18
1232
0
0
0

Кракозябы в RCP-приложении под Linux

Исходные данные:

  • Java-проект: RCP-приложение
  • файлы проекта в кодировке cp1251
  • проект собирается под Linux (PDE-build)

Проблема:

  • в полученном приложении в GUI кракозябы
Поиск в интернете приводит к двум основным и очевидным результатам:

1. Самое простое - это установка кодировки в настройках

2. Переход на использование кодировки utf-8

Если первое и так имело место, но не помогало при сборке, то второе по определенным причинам вообще неприемлемо.

Реальная причина:

При сборке Eclipse вызывает javac с кодировкой по умолчанию (зарегистрирован даже тикет такой у них). В Windows это прокатывает так как кодировка java-файлов cp1251 и javac по-умолчанию использует cp1251. А под линуксом javac по-умолчанию использует UTF-8. То есть проблема рисуется не при запуске приложения, а еще при компиляции плагинов.

Когда же код компилируется в Eclipse (не PDE-build) то он (Eclipse) ведет себя умнее, т.е. помнит о настройках.

Поэтому для большинства случаев установки кодировки в настройках вполне хватает.

Решение

Правильное решение состоит в указании кодировки в файле build.properties для каждого плагина.

Делается это добавлением строки

javacDefaultEncoding.. = cp1251

Обратите внимание на две точки после javacDefaultEncoding - это не ошибка.

В результате файл build.properties должен выглядеть примерно так:

source.. = src/
output.. = bin/
javacDefaultEncoding.. = cp1251
bin.includes = META-INF/,\
.,\
plugin.xml,\
plugin.properties,\
plugin_ru.properties
src.includes = META-INF/,\
.,\
plugin_ru.properties,\
plugin.xml,\
plugin.properties,\
src/

Оцените пост

0