1

我想为“Nokia/Series60E3”设备编译 J2ME 波兰语示例应用程序“Blank”。我得到一个编译错误。我究竟做错了什么?

似乎有访问父对象的私有属性,因此无法编译。如果我尝试为“Generic/AnyPhone”设备编译它,它工作正常。

d:\Program Files (x86)\J2ME-Polish\samples\blank>ant j2mepolish
Buildfile: d:\Program Files (x86)\J2ME-Polish\samples\blank\build.xml

init:

j2mepolish:
[j2mepolish] J2ME Polish 2.4 (2013-08-27) (GPL License)
[j2mepolish] Loading device database...
[j2mepolish] Last build was interrupted or failed, now clearing work directory...
[j2mepolish] using locale [en_US]...
[j2mepolish] assembling resources for device [Nokia/Series60E3].
[j2mepolish] preprocessing for device [Nokia/Series60E3].
[j2mepolish] processing locale code...
[j2mepolish] Warning: unable to resolve path to API "securityapi". If this leads to problems, please register this API in [apis.xml].
[j2mepolish] compiling for device [Nokia/Series60E3].
[j2mepolish-javac-Nokia/Series60E3] warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[j2mepolish-javac-Nokia/Series60E3] Compiling 595 source files to d:\Program Files (x86)\J2ME-Polish\samples\blank\build\real\Nokia\Series60E3\en_US\classes
    [javac] Internal J2ME Polish class: d:\Program Files (x86)\J2ME-Polish\samples\blank\build\real\Nokia\Series60E3\en_US\source\de\enough\polish\ui\SourcedLazyContainer.
    [javac] symbol  : variable lastPointerPressY
    [javac] location: class de.enough.polish.ui.SourcedLazyContainer
    [javac]                             this.lastPointerPressY = this.currentPointerDragY;
    [javac]                                 ^
    [javac] Internal J2ME Polish class: d:\Program Files (x86)\J2ME-Polish\samples\blank\build\real\Nokia\Series60E3\en_US\source\de\enough\polish\ui\SourcedLazyContainer.
    [javac] symbol  : variable lastPointerPressYOffset
    [javac] location: class de.enough.polish.ui.SourcedLazyContainer
    [javac]                             this.lastPointerPressYOffset = newOffset;
    [javac]                                 ^
    [javac] Internal J2ME Polish class: d:\Program Files (x86)\J2ME-Polish\samples\blank\build\real\Nokia\Series60E3\en_US\source\de\enough\polish\ui\SourcedLazyContainer.
    [javac] symbol  : variable lastPointerPressY
    [javac] location: class de.enough.polish.ui.SourcedLazyContainer
    [javac]                             this.lastPointerPressY = this.currentPointerDragY;
    [javac]                                 ^
    [javac] Internal J2ME Polish class: d:\Program Files (x86)\J2ME-Polish\samples\blank\build\real\Nokia\Series60E3\en_US\source\de\enough\polish\ui\SourcedLazyContainer.
    [javac] symbol  : variable lastPointerPressYOffset
    [javac] location: class de.enough.polish.ui.SourcedLazyContainer
    [javac]                             this.lastPointerPressYOffset = newOffset;
    [javac]                                 ^
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 4 errors
    [javac] An internal class of J2ME Polish could not be compiled. Please try a clean rebuild by either calling "ant clean j2mepolish" or by removing the working director
E-Polish\samples\blank\build\real".
    [javac] If an API-class was not found, you might need to define where to find the device-APIs. Following classpath has been used: [d:\Program Files (x86)\J2ME-Polish\i
les (x86)\J2ME-Polish\import\cldc-1.1.jar;d:\Program Files (x86)\J2ME-Polish\import\midp-2.0.jar;d:/Program Files (x86)/J2ME-Polish/import/nokia-ui.jar;d:/Program Files (x
jar;d:/Program Files (x86)/J2ME-Polish/import/btapi.jar;d:/Program Files (x86)/J2ME-Polish/import/m3g.jar;d:/Program Files (x86)/J2ME-Polish/import/pdaapi.jar;d:/Program F
/jsr172.jar;d:/Program Files (x86)/J2ME-Polish/import/jsr180.jar;d:/Program Files (x86)/J2ME-Polish/import/m2g.jar].

BUILD FAILED
d:\Program Files (x86)\J2ME-Polish\samples\blank\build.xml:67: Unable to compile source code for device [Nokia/Series60E3]: Compile failed; see the compiler error output f
4

1 回答 1

2

这似乎是 SourcedLazyContainer 类中的一个错误。它们引用 lastPointerPressY 和 lastPointerPressYOffset 字段,这些字段仅在设备具有指针事件时可用。它们在 Container 类中定义如下:

//#ifdef polish.hasPointerEvents
/** vertical pointer position when it was pressed the last time */ 
protected int lastPointerPressY;
/** scrolloffset when this container was pressed the last time */
protected int lastPointerPressYOffset;
/** time in ms when this container was pressed the last time */
protected long lastPointerPressTime;
//#endif

由于您的目标设备没有此功能,因此未定义这些字段。对于 Generic/AnyPhone,此功能已定义,因此构建成功。您可以尝试将“hasPointerEvents”功能添加到您的 devices.xml / custom-devices.xml 文件中,或者在您的 ant 目标中设置 Polish.hasPointerEvents 属性。

于 2014-01-19T18:43:24.190 回答