Баг в виртуальной машине J2ME?

Программисты всех стран - объединяйтесь! Обсуждаем программирование на C, C++, Java, PHP, SQL, HTML и всем остальном. Регистрация в форуме не требуется!

Баг в виртуальной машине J2ME?

Postby Handy-Tools.net » 29 Jan 2008, 05:30

Столкнулся с совершенно разным поведением кода в среде Java 2ME и Java SE.

Предположим, у нас есть такой интерфейс:

Code: Select all
public interface MyInterface {

   int VAL1 = 1;
   int VAL2 = 2;

   String [] STRINGS = {
        "String-1",
        "String-2",
        "String-3"
    };
}



Используем интерфейс:

Code: Select all
public class MyClass implements MyInterface {

    public void test() {
       int v1 = VAL1;

       int l = STRINGS.length;
      // или
      // String s = STRINGS[1];
   }
}



Под J2SE идет нормально, под J2ME вылетает на int l = STRINGS.length с ошибкой:

java/lang/NoSuchFieldError: No such field STRINGS.[Ljava/lang/String;.

Проверка показала, что почему-то выходит так, что STRINGS всегда равно null, несмотря на то, что другие переменные из интерфейса, вроде int VAL1 = 1; всегда отрабатываются нормально.

В итоге при работе возникала конструкция null.length или null[index] и на этом месте происходил неотлавливаемый вылет с системным эксепшеном. Пришлось повозиться пару часов, чтобы разобраться в чем дело.

Что это? Глюк реализации JVM от Nokia (проверял на нескольких эмуляторах) или фича Java 2ME?

Проверялось также на эмуляторе от Sun WTK, но результат уже не помню. По-моему была такая же ошибка.
Handy-Tools.net
 
Posts: 42
Joined: 14 Dec 2007, 03:21

Return to Разработка ПО

Who is online

Users browsing this forum: No registered users and 2 guests

cron