2016-04-29 5 views
0

javaME 8.2でJNAを使用しようとしていますが、成功しません。私はJNAとjavaMEの両方に新しいです。 現在、NetBeans 8.1、javaME SDK 8.2、およびJNA 4.2.1を使用しています。JNAとjavaMEエラー

私はちょうどIntByReference JNA型のインスタンスを作成し、以下の非常に簡単なテストアプリケーションている:

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」はSDKにインストールされているデフォルトのEmbeddedDeviceエミュレータを使用しています)次のエラーが表示されます。

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) 

は、私はあなたが実行するために使用されるものより新しいJDKを持つクラスをコンパイルjava.lang.UnsupportedClassVersionErrorを得ることを知っているが、これはそうではありません。

ここで何が起こっているのか分かりませんか?

答えて

0

私はJNAを一度も使ったことがないので、実際の内容はわかりませんが、その名前は、MIDletが実行されているどのデバイスでもネイティブ機能を呼び出すために使用されています。 私は99%がJavaMEでは不可能だと思っています。少なくとも、MIDletに関してはそうではありません。 ネイティブのものへのアクセスがJavaMEから利用できる場合、デバイスメーカーがそのようなAPIを含んでいれば、それはcom.sun.jna.ptr.IntByReferenceと呼ばれるのではなく、com.vendor.jna.*のようになります。私はこれの例を見たことがない。