JNA和javaME错误

时间:2016-04-29 16:38:07

标签: java-me jna netbeans-8 unsupported-class-version

我试图将JNA与javaME 8.2一起使用,但没有成功。我是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比用于执行的JDK更新的类时,你会得到一个java.lang.UnsupportedClassVersionError,但情况并非如此。

有人会对这里发生的事情有所了解吗?

1 个答案:

答案 0 :(得分:0)

我从未使用过JNA,所以我不知道它是什么,但这个名字暗示它曾经用于在MIDlet运行的任何设备上调用本机功能。 我99%肯定使用JavaME是不可能的,至少在使用MIDlet时是这样。 如果可以从JavaME获得对任何原生内容的访问,那么如果设备制造商已经包含这样的API,那么它就不会被称为com.sun.jna.ptr.IntByReference,而是com.vendor.jna.*之类的东西。 。我从未见过这方面的任何例子。