Java me &引用;无效的应用程序。删除?“;仅当使用诺基亚SDK编译时

Java me &引用;无效的应用程序。删除?“;仅当使用诺基亚SDK编译时,java-me,sdk,nokia,nfc,Java Me,Sdk,Nokia,Nfc,我正在为我的大学开发一款软件,目前正在尝试实现NFC功能,这需要我从标准的Sun无线工具包平台(通过实现)转移到诺基亚平台(也通过NetBeans实现) 问题是,每当我使用诺基亚平台实现编译代码并运行程序时,无论是在我的诺基亚手机上还是在emulator中,手机都会显示一个框,说明“无效的应用程序。删除?”并回答“是/否”。这将停止应用程序的安装。奇怪的是,如果我使用Sun平台实现编译完全相同的代码,它在诺基亚手机上运行时不会出现任何问题。我用两种不同的诺基亚SDK(40系列诺基亚6212 NF

我正在为我的大学开发一款软件,目前正在尝试实现NFC功能,这需要我从标准的Sun无线工具包平台(通过实现)转移到诺基亚平台(也通过NetBeans实现)

问题是,每当我使用诺基亚平台实现编译代码并运行程序时,无论是在我的诺基亚手机上还是在emulator中,手机都会显示一个框,说明“无效的应用程序。删除?”并回答“是/否”。这将停止应用程序的安装。奇怪的是,如果我使用Sun平台实现编译完全相同的代码,它在诺基亚手机上运行时不会出现任何问题。我用两种不同的诺基亚SDK(40系列诺基亚6212 NFC SDK和40系列第5版SDK)尝试了这一点,结果相同


诺基亚SDK有什么不同之处?

确保以下属性(键:值对)位于JAD文件中,同时也位于JAR文件中的清单文件中:

  • MIDlet名称
  • 中置版本
  • 小型供应商
  • MIDlet Jar URL
  • 中型罐大小

  • 在使用Sun平台创建的项目和在诺基亚平台创建的项目之间似乎存在某种差异


    虽然最初使用Sun平台创建、使用诺基亚平台编译的原始程序导致应用程序无效,但当我使用诺基亚平台从头开始创建一个新项目时,我只是在程序运行期间复制了原始程序的源代码。两者之间的/manifest文件没有明显区别。

    如果您复制了源代码,则可能没有复制“manifest.MIDlet”,即告诉操作系统要创建哪些“表单”。您通常会在项目属性中找到这一点


    (例如,在NetBeans IDE-应用程序描述符中,“MIDlet”选项卡-它不应为空)。

    程序是通过NetBeans编译的,因此jad和清单都是自动创建的,我仔细检查了这些东西是否存在,它们是否存在。如果诺基亚平台指的是诺基亚SDK,那么Java版本和API可能会有所不同。我最近注意到诺基亚SDK允许向量、枚举等使用,这在J2ME中是不可能的,因为它基于Java 1.3。一个快速的测试是看看所包含的JAR是否有任何差异。事实上似乎确实如此,但您可以假设两者都是sdk设计用于为同一种语言生成代码的,它们不会有如此根本的差异。另外,您可以在j2me中使用enums()和vectors(),也许您正在考虑一个较旧的实现。不,它不会导致编译器错误,因为使用它的是操作系统。