На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Совместимость версий в Java'e , новые методы
    Добрый всем...

    В Яве 1.5 и класа Стринг появился такой класный метод...
    ExpandedWrap disabled
      public boolean contains(String s) { /* compiled code */ }

    он просто говорит естю ли подстрока s в нашей строке... вот и написал я что-то типа:
    ExpandedWrap disabled
      getPairName(0).contains(getIgral(gameNumber, dealNumber))

    где :
    getPairName(0) и getIgral(gameNumber, dealNumber) две строчки...
    и даже откомпилил в Идейке - всё супер...

    но вот после того как собрал\заобфусцировал аплетик то юзверя(и я в томже числе) видят

    java.lang.NoSuchMethodError: java.lang.String.contains(Ljava/lang/String;)Z
    :wall:

    Может у когонить есть мысли по этому поводу


    ЗЫ Я конечно понимаю что есть такая штучка у стринга как indexOf != -1... но тогда спрашиваеться накой сану париться и выпускать новые версии... :'(
      Да, тут налицо пример несовместимость версий. При разработке приложения нужно ориентироваться на версию Java, которая стоит у юзеров. Или требовать от них конкретной версии.

      С этим в джаве туго. Так как тут не только несовместимость сверху вниз. Тут может быть даже несовместимость снизу вверх! То есть, прога, написанная для 1.3, может не работать на 1.4. Почему? Потому, что могут меняться определения интерфейсов - прибавляться новые методы. И если ты имплементировал какой-то интерфейс, к которому в более новой версии джавы прибавился метод, то твой класс уже не имплементирует все методы интерфейса, то есть имплементирует неправильно! И это будет причиной ошибки при исполнении.
        Поэтому-то и не стоит расширять интерфейсы.. Надо вводить наследников. Или затевать глобальный рефакторинг.
        В твоем же случае надо просто юзать indexOf и не мучаться (либо всегда запускать под Java 5)
          Так в том-то и проблемма что под идейкой у меня запускаеться а в собранной версии не пашет.. а как вообще посмотреть какая конкретно у меня ява юзаетсья? А то в контролпанеле в разделе ява а потом в одной за закладок у апплетов аж 3 версии явы (хотя все 1.5)
            Щелкаешь по проекту в IDEA - ModuleSettings - Libraries(Classpath) - Там указана используемая версия JDK.
              Когда запускаешь из-под браузера, как правило, стартует Java Console. Можно там посмотреть.
                всем спасобо... как в идейку посмотреть я знал... и там всё в поряде так как компилилось и запускалось из идейки всё НА УРА... а вот с готовым апплетом так и не разобрался :( прийдёться откатиться к версии 1.4 хотя (спасибо Lamer George) в Ява консоле:

                Java Plug-in 1.5.0_04
                Using JRE version 1.5.0_04 Java HotSpot(TM) Client VM

                вот и объясните мне как эта версия не знает:

                contains
                public boolean contains(CharSequence s)
                Returns true if and only if this string contains the specified sequence of char values.

                Parameters:
                s - the sequence to search for
                Returns:
                true if this string contains s, false otherwise
                Throws:
                NullPointerException - if s is null
                Since:
                1.5

                в общем ява победила
                  Хм. Может, в classpath или в реестре где-нибудь остались отсылки на 1.4, и система сначала пытается лезть туда?
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0329 ]   [ 14 queries used ]   [ Generated: 17.09.25, 11:44 GMT ]