2016-04-29 12 views
0

Ich versuche, JNA mit JavaME 8.2 zu verwenden, aber mit keinem Erfolg. Ich bin neu bei JNA und JavaME. Ich verwende derzeit NetBeans 8.1, JavaME SDK 8.2 und JNA 4.2.1.JNA und JavaME Fehler

Ich habe folgende sehr einfache Anwendung, die nur eine Instanz der IntByReference JNA Art erzeugt:

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 
} 

Der Code erstellt ohne Fehler, aber wenn ich versuche, es in dem Emulator auszuführen (i‘ m den Embedded-Standard-Emulator verwenden, der mit dem SDK installiert wurde) Ich erhalte den folgenden Fehler.

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) 

Ich weiß, dass Sie eine java.lang.UnsupportedClassVersionError erhalten, wenn Sie eine Klasse mit einer JDK aktueller als die für die Ausführung verwendet man kompilieren, aber das sollte nicht der Fall sein.

Hätte jemand eine Idee, was hier passiert?

Antwort

0

Ich habe nie JNA verwendet, also weiß ich nicht wirklich, was es ist, aber der Name impliziert, dass es verwendet wird, um native Funktionalität auf jedem Gerät aufzurufen, auf dem das MIDlet läuft. Ich bin zu 99% sicher, dass das mit JavaME einfach nicht möglich ist, zumindest nicht, wenn es um MIDlets geht. Wenn von JavaME Zugriff auf alle nativen Funktionen zur Verfügung stünde, wäre es, wenn der Gerätehersteller eine solche API enthalten hätte. In diesem Fall würde es nicht com.sun.jna.ptr.IntByReference heißen, sondern eher wie com.vendor.jna.*. Ich habe jedoch nie ein Beispiel dafür gesehen.