Проблема локали Java в апплете поставщика - PullRequest
1 голос
/ 28 августа 2009

У меня есть апплет поставщика, который пытается использовать больше не поддерживаемые настройки локали.

Де скомпилированный код выглядит следующим образом

 String s1 = System.getProperty("java.version");
 String s2 = System.getProperty("user.language");
 String s;
    if(s1.regionMatches(true, 0, "1.4", 0, 3))
        s = System.getProperty("user.country");
    else
        s = System.getProperty("user.region");
    m_Locale = new Locale(s2, s);

Проблема в том, что другие приложения на клиентском компьютере требуют JRE 1.5 и выше.

Таким образом, строка if (s1.regionMatches (true, 0, "1.4", 0, 3)) всегда указывается на else

 s = System.getProperty("user.region"); always returns null in JRE 1.4 or higher. 

Так новый язык (s2, s);

вызывается с нулевым параметром, выбрасывающим нулевой указатель.

Я знаю, что этот код был введен так давно для поддержки более старых JRE, а именно 1.1 и 1.3, в которых user.region был допустимым системным свойством.

То, как я это вижу, у меня есть 2 варианта.

  1. Привлеките продавца и надеемся, что он внесет исправления, не сказав нам потратить деньги на обновление.

  2. Перекомпилируйте код с внесенными исправлениями и перепишите банки с моим собственным сертификатом. И, возможно, нарушить соглашение о лицензировании / поддержке.

Или это третий вариант? Я не видел способа установить системное свойство в Java без этого в самом коде. Есть ли способ? У меня есть полный доступ к клиентским машинам, если необходимо отправить файл на них. Я просто не знаю, как добавить или изменить системное свойство java по умолчанию, не используя строку аргумента cmd или не делая этого в коде.

1 Ответ

1 голос
/ 28 августа 2009

Видя, как апплеты запускаются через подключаемый модуль Java и у вас есть доступ к клиентским машинам, вы можете попробовать установить user.region в качестве параметра времени выполнения на панели управления подключаемого модуля Java. Подробнее здесь

...