2016-04-29 10 views
0

Я пытаюсь использовать JNA с javaME 8.2, но без успеха. Я новичок в JNA и javaME. В настоящее время я использую NetBeans 8.1, javaME SDK 8.2 и JNA 4.2.1.Ошибка JNA и javaME

У меня есть следующие очень простой тестовое приложение, которое просто создает экземпляр типа IntByReference ЮНА:

import javax.microedition.midlet.MIDlet; 
import com.sun.jna.ptr.IntByReference; 

public class JavaMEApplication2 extends MIDlet { 

boolean bFirst = false; 
boolean loopFlag = true; 

//@Override 
public void startApp() { 

    if (bFirst = false) { 

     try { 
      // Perform startup operations 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
      return; 
     } 

     bFirst = true; 
    } else { 
     System.out.println("Trying starting IMlet..."); 
     IntByReference data = new IntByReference(); 
     System.out.println("IMlet Demo is already started..."); 
    } 

    // Start program here 
} 

Код строит без ошибок, но когда я пытаюсь запустить его в эмуляторе (I» м, используя эмулятор EmbeddedDevice по умолчанию, установленный с SDK). Я получил следующую ошибку.

Starting emulator in execution mode 
Trying starting IMlet... 
TRACE: <at java.lang.UnsupportedClassVersionError>, startApp threw an Exception 
java.lang.UnsupportedClassVersionError 
- javameapplication2/JavaMEApplication2.startApp(JavaMEApplication2.java:38) 
- .unknown...unknown.(), bci=1 
- .unknown...unknown.(), bci=5 
- .unknown...unknown.(), bci=236 
- .unknown...unknown.(), bci=38 
- .unknown...unknown.(), bci=5 
- .unknown...unknown.(), bci=127 
- com/sun/midp/main/AppIsolateMIDletSuiteLoader.main(), bci=26 
java.lang.UnsupportedClassVersionError 
- javameapplication2/JavaMEApplication2.startApp(JavaMEApplication2.java:38) 
- .unknown...unknown.(), bci=1 
- .unknown...unknown.(), bci=5 
- .unknown...unknown.(), bci=236 
- .unknown...unknown.(), bci=38 
- .unknown...unknown.(), bci=5 
- .unknown...unknown.(), bci=127 
- com/sun/midp/main/AppIsolateMIDletSuiteLoader.main(), bci=26 
BUILD SUCCESSFUL (total time: 8 seconds) 

Я знаю, что вы получите java.lang.UnsupportedClassVersionError при компиляции класса с JDK более поздней, чем используемый для выполнения, но это не должно быть так.

Может кто-нибудь иметь представление о том, что здесь происходит?

ответ

0

Я никогда не использовал JNA, поэтому я действительно не знаю, что это такое, но это означает, что он используется для вызова встроенной функции на любом устройстве, на котором работает MIDlet. Я на 99% уверен, что это просто невозможно с JavaME, по крайней мере, когда дело доходит до MIDlet. Если доступ к любому родному материалу будет доступен из JavaME, было бы, если бы производитель устройства включил такой API, и в этом случае он не назовался бы com.sun.jna.ptr.IntByReference, а скорее как com.vendor.jna.*. Я никогда не видел никаких примеров этого.