CNJM首页 | 业界新闻 | 手机软件 | 终端应用 | 资源下载 | 开发文档 | EclipseME | CNJM论坛 加入收藏 | 设为首页  
logoTop pad
logoBottom
首页
历史
目录
先决条件
安装
创建一个新项目
创建一个新MIDlet
运行/调试
打包发布
高级话题
参考
常见问题
提交问题报告
技术支持
EclipseME开发者
许可证

Eclipse Ready Logo
SourceForge.net Logo


CNJM.net
spacer


常见问题


预校验与部署目录发生错误

如果工程路径与源码目录以及输出目录相同时,预校验与部署文件夹会发生错误。 Eclispe的java工具默认把预校验产生的类也放到classpath中,但是它们的路径和 包的结构不匹配,于是就发生了如下图所示的错误。

screenshot

当这种现象发生时,你必须定义一系列的源码排除样式(Source Exclusion Patterns) 把预校验和部署的文件从classpath中移除。你可以照着下图在工程首选项中设置:

screenshot

在EclipseME 0.4.0 版本以后, 当工程目录与项目目录相同时,这些排除设置会被自动的加进来。

不能恢复工作区状态

很多因素会造成这个问题,不过最有可能是因为平台组件视图被整合到了J2ME首选项中去。 这是一个次要的错误,在每个透视图中只会发生一次。参见migration 来得到详细信息。

调试的时候报告"KVM Not Ready"

WTK的调试器似乎是 Sun 的 MIDP 以及 K Debug Proxy 工具的联合体, 他们被编译到了同一个可执行文件。 通常会有两个不同的工具通过socket连接交谈。 当对话中的一半等待另一半的时候,似乎容易给出这个警告。 这个警告会出现在控制台上,但是好像不影响模拟器的调试。

为什么我的MIDLet套件中会有未定义平台(Unspecified Platform)?

在早期版本中,经常容易把与MIDlet套件相关联的平台定义信息搞丢。 这会引起很多问题。 如果很不幸它被搞丢了的话,EclipseME就用未定义平台来代替。

screenshot

这个工程不包含任何库与信息,你的工程也因而不会被编译。 你可以在J2ME Properties 中为你的工程关联有效的平台定义。

为什么Eclipse报告说"build path is incomplete"?

好多原因会造成这个问题,最大的可能是工程的设备平台定义有问题。 参见为什么我的MIDLet套件中会有未定义平台(Unspecified Platform)? 的回答。

为什么通过命令行签署不能得到类文件

This error occurs because Eclipse doesn't currently request class prepare events for all classes. 参见 EclipseME bug 904266 以及 Eclipse Bug 50531 来获得进一步信息。

为什么打包的时候报告"Could not find jar tool executable"

在混淆的过程中,混淆工具产生的JAR文件需要被再次预校验。 此时,预处理工具会从环境变量中寻找并调用jar工具的可执行文件。 EclipseME一般会在JRE安装目录下面去寻找。 如果发生这个问题了,肯定是因为EclipseME在已经安装的JRE(java的子类)中找到了 至少一个JDK。这种情况下,在Windows下,Eclipse会默认识别JRE而不是JDK。 为了解决这个问题,将已安装JRE的路径指定为JDK的路径就可以了。 比如在Windows上,可以指定类似的一个目录:c:\j2sdk1.4.2 。

当我调试我的MIDlet的时候,什么也没发生

检查你是不是对调试设定做了必要的配置。 参见 改变Eclipse的调试设定来得到详细信息。

当我试图通过OTA模式调试我的MIDlet的时候, 得到如下错误:"No midlets defined in JAD File."

你没有使用应用描述文件(JAD)编辑器的Midlets 面板上定义MIDlet 可以使用 Java应用描述文件(JAD)编辑器 为MIDlet来添加入口。

当你手动创建你的MIDlet或者 创建新的MIDlet中的 添加到应用描述文件选项没有被选中时, 会出现这个问题。

我怎么在生成JAR文件的时候把图片等资源包含进来?

在EclipseME工程中,作为构建的一部分,源文件夹中的的所有java文件会 被自动编译,其他的文件会被拷贝到构建文件夹。这是标准的Eclipse行为。

可以这样指定一个新的源文件夹:

  1. 双击工程或者从工程 / 属性菜单项 选择Properties 打开工程属性对话框。

  2. 从左侧选择"Java Build Path"一栏后再从右边选择"Source"面板。 点"Add Folder..."按钮,然后从工程目录中选择你的资源文件夹, 把它左侧的勾打上表示你选择了它。接下来点OK 分别退出这个对话框和上层的工程属性对话框。
    screenshot

  3. 在你执行这项操作的时候,也许会碰到这个对话框: W
    screenshot
    Eclipse有两种方式来构建新工程:第一,使用工程目录的根目录做为源目录以及输出目录; 第二,使用不同的目录来存放源文件和输出文件,通常这两个文件夹被称作 srcbin。 你遇到这个问题通常是因为你使用第一种方法创建了这个文件夹。 Eclipse不支持相互嵌套的源目录,所以当你在一个源目录中(比如工程目录)指定了另外一个 源目录,你就会遇到这个问题。

    如果在这种情形下还想将源目录和输出目录分开的话,你就得重新组织你的工程了。 方法时:创建一个叫"src"的新文件夹,将所有的java文件转移进去,再按前面说的方法将 这个文件夹(以及你的资源文件夹)指定为源目录。这时,Eclipse会建议你将 输出目录转换为"bin"目录,并且询问你是否删除原来的输出文件。对每个问题都回答"Yes" 之后你的工程会被恰当的进行重新组织。

注意: 作者认为即使没有单独的资源文件的时候,将输出 与输入文件分离也会比将他们合在一起好。不过Eclipse菜鸟们(the Eclipse folks) 肯定不这么认为,因为这不是默认选项。

Eclipse中有一个设置可以控制在新创建一个工程的时候是否为源文件和输出文件使用不同的 目录。你可以按照一下的步骤来设置:选择Windows / Preferences 打开Eclipse Preferences 对话框。 展开左侧的java项目,然后选择Build Path , 在左侧点Folders后会看到这样的画面:
screenshot
如果你不想使用 src 以及 bin 作为你的源文件目录和输出文件目录的名字,你可以文本框里修改。

记住,这个设置只有在新建工程的时候才有用。如果你想重新组织一个已经存在的工程的话, 只能安装前文提到的方法手工调整了。

我怎么与其他的Eclipse工程共享类文件?

对于标准的J2SE应用,一个单独的应用通常是由好多的JAR文件组成的。不过在J2ME 中不是这样。按照J2ME平台的要求,所有的类都是MIDlet套件中的一部分,发布到真机的时候, 它们最终被打到一个JAR包中。

这并不意味着你 不能 mean 在不同的EclipseME工程之间共享代码。EclipseME时可以处理存在依赖关系的工程的。 做为部署过程的一部分,EclipseME把把所需的类从"子"工程里面抽取出来放到你的 MIDlet套件中。

为了达到这个目的,你需要按照以下的步骤来作:

  1. 所有使用J2ME类的工程都需要转换成EclipseME工程。不要直接手工将J2ME库添加到构建路径, 即使只是工具库——让EcliseME来完成这些。 构建路径中所有J2ME平台定义中不存在的库都被假设成在真机上是不存在的。它们在预校验 后将被打包到到你的MIDlet JAR文件中去。很明显,你不希望构建进程为了预校验那些真机上 已经存在的库而浪费时间,也不希望他们不打到JAR包中。

  2. "子工程"(比如那些类会被"父"MIDlet包含的工程)必须确保指导出它们自己的类,而不要把 J2ME的类也一起导出了。看下面这这个例子,source和resource文件夹中的内容被选中导出, 而J2ME的类却没有。

    screenshot

    EclipseME会为每个EclipseME工程添加合适J2ME类,所以你没有必要导出它们。如果 你将它们导出,可能反而会遇到不可遇见的异样,比如当两个工程使用不同的平台工具时。 下面是一下可能产生的问题:

    • "父工程"绑定了错误版本的类。(因为"子工程"中的类替代了原来的)
    • EclipseME花时间为"子工程"的J2ME库进行预校验,其实这是不必要的。
    • EclipseME将"子工程"的J2ME库打包到最后发布的JAR文件中。

为什么“资源目录”(resource directory)功能没用?

"资源目录"只有在创建工程的时候有用。当工程已经创建完了,在修改这个属性 是没有用的。

另外,只有你在Eclipse中设置了分别创建源文件目录和输出目录时才有用。 参见安装知道中安装之前一节关于如何配置Eclipse的说明。

为什么真机说我的应用是非法的?

以下是一些可能的原因:

  • 你的程序可能需要MIDP-2.0 或者 CLDC-1.1的支持,而你的真机却只支持MIDP-1.0 or CLDC-1.0。 确认JAD文件是否正确,是不是为你的工程属性选择了合适的平台定义。
  • 你使用了某些设备支持的扩展JAR,但是另外的真机上却没有这个JAR。 为你的MIDlet套件添加JAR一节有关于这个问题的详细讨论。
  • 你使用了真机不支持的Java类文件格式来编译java类。 最佳实践 一节有关于这个问题的详细讨论。

当然,以上的列表并不完全,不过已经涵盖了问题的大多数情况。

为什么JAR或者依赖项目中的类在发布文件中没有被包含进来?

从EclipseME 0.9.4 版本开始,为了在部署时包含进依赖的JAR库,你需要在工程属性的JAVA构建路径选项 的定制与导出(Order and Exports)页面中,手工选择要导出的项目。 类似的,在部署时要添加进来的依赖工程中的资源也要如此配置。 为你的MIDlet套件添加JAR 一节有关于这个问题的详细讨论。

为什么模拟器在调试的时候崩溃了?

如果你的MIDlet套件在运行的时候没问题,但是调试的时候却崩溃了, 可能是你的调试器选项有问题。 确保“发生未捕获的异常时暂挂执行”选项没有被选中,就好像 安装指导中描述的那样。



Copyright © 2005, http://www.eclipseme.org. All rights reserved. 本中文版由中国Java手机网<www.cnjm.net>翻译