Stanislav Šimek
Stanislav Šimek

Reputation: 11

J2MEPolish cannot compile example application

I want to compile J2ME Polish example application "Blank" for "Nokia/Series60E3" device. I get a compile error. What am I doing wrong?

It seems there is accessed private property of parent object, therefore it cannot be compiled. If I try to compile it for "Generic/AnyPhone" device, it works OK.

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

Upvotes: 1

Views: 268

Answers (1)

RPortela
RPortela

Reputation: 21

It seems like a bug in SourcedLazyContainer class. They refer to the lastPointerPressY and lastPointerPressYOffset fields, which are only available when the device has pointer events. They are defined in the Container class like this:

//#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

Because the device you are targeting does not have this capability, these fields are not defined. In the case of the Generic/AnyPhone, this capability is defined, and as such, the build succeeds. You can try and add the "hasPointerEvents" capability to your devices.xml / custom-devices.xml file, or set the polish.hasPointerEvents property in your ant target.

Upvotes: 2

Related Questions