0

javaME 8.2 で JNA を使用しようとしていますが、うまくいきません。私は JNA と JavaME の両方が初めてです。現在、NetBeans 8.1、javaME SDK 8.2、および JNA 4.2.1 を使用しています。

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
}

コードはエラーなしでビルドされますが、エミュレーターで実行しようとすると (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が発生することは知っていますが、これは当てはまりません。

ここで何が起こっているのか、誰にもわかりませんか?

4

1 に答える 1

0

私は JNA を使用したことがないので、それが何であるかはよくわかりませんが、その名前は、MIDlet が実行されているデバイスでネイティブ機能を呼び出すために使用されることを暗示しています。少なくとも MIDlet に関しては、JavaME では不可能だと 99% 確信しています。JavaME からネイティブなものへのアクセスが可能になるとしたら、それはデバイス メーカーがそのような API を組み込んでいた場合であり、その場合は呼び出されずcom.sun.jna.ptr.IntByReferencecom.vendor.jna.*. 私はこれの例を見たことがありません。

于 2016-05-02T05:58:28.170 に答える