2

I'm trying to bind a native Java library. This jar file has previously been integrated into a binding project and I am attempting to update the jar with the latest version.

I'm getting the following issues during build:

1>obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java:81: error: cannot find symbol
1>  public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
1>                                                                                          ^
1>  symbol:   class DeferredAuthorizationReason
1>  location: package com.creditcall.cardeasemobile
1>obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java:86: error: cannot find symbol
1>  private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
1>                                                                                                    ^
1>  symbol:   class DeferredAuthorizationReason
1>  location: package com.creditcall.cardeasemobile

1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error :  error: cannot find symbol
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error :    public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error :   symbol:   class DeferredAuthorizationReason
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error :   location: package com.creditcall.cardeasemobile
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(81,90): javac.exe error : 
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error :  error: cannot find symbol
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error :   private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error :   symbol:   class DeferredAuthorizationReason
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error :   location: package com.creditcall.cardeasemobile
        1>D:\repo\a\Payment\obj\Debug\android\src\md5590cc678a2a3d84b78a3968f92c9e08f\cemListener.java(86,100): javac.exe error : 
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error :  error: cannot find symbol
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error :  public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error :   symbol:   class DeferredAuthorizationReason
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error :   location: package com.creditcall.cardeasemobile
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(81,90): javac.exe error : 
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error :  error: cannot find symbol
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error :     private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error :   symbol:   class DeferredAuthorizationReason
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error :   location: package com.creditcall.cardeasemobile
        1>D:\repo\a\Payment\obj\Debug\android\src\mono\com\creditcall\cardeasemobile\ICardEaseMobileListenerImplementor.java(86,100): javac.exe error : 

I can see these methods on cemListener.java:

    public void deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2)
    {
        n_deferredAuthorization (p0, p1, p2);
    }

    private native void n_deferredAuthorization (boolean p0, boolean p1, com.creditcall.cardeasemobile.DeferredAuthorizationReason p2);

I can see that DeferredAuthorizationReason exists and has values that are accessible from my C# files. It seems like the binding has worked? I presume the issue is that cemListener.java cannot see DeferredAuthorizationReason for some reason.

I presume that I need to make a change to my Metadata.xml but I'm not sure what is needed given that the issue seems to be within the java files rather than C#.

This is the class in the api.xml:

<class abstract="false" 
           deprecated="not deprecated" 
           extends="java.lang.Enum" 
           extends-generic-aware="java.lang.Enum&lt;com.creditcall.cardeasemobile.DeferredAuthorizationReason&gt;" 
           final="true" 
           name="DeferredAuthorizationReason" 
           static="false" 
           visibility="public">

        <method abstract="false" 
                deprecated="not deprecated" 
                final="false" 
                name="valueOf" 
                native="false" 
                return="com.creditcall.cardeasemobile.DeferredAuthorizationReason" 
                static="true" 
                synchronized="false" 
                visibility="public">

            <parameter name="p0" 
                       type="java.lang.String">
            </parameter>

        </method>

        <method abstract="false" deprecated="not deprecated" final="false" name="values" native="false" return="com.creditcall.cardeasemobile.DeferredAuthorizationReason[]" static="true" synchronized="false" visibility="public">
        </method>

        <field deprecated="not deprecated" final="true" name="CommunicationFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
        </field>

        <field deprecated="not deprecated" final="true" name="ConnectionFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
        </field>

        <field deprecated="not deprecated" final="true" name="None" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
        </field>

        <field deprecated="not deprecated" final="true" name="ProcessingFailed" static="true" transient="false" type="com.creditcall.cardeasemobile.DeferredAuthorizationReason" type-generic-aware="com.creditcall.cardeasemobile.DeferredAuthorizationReason" visibility="public" volatile="false">
        </field>

    </class>

I can see other enums that don't seem to be causing problems, I can't see what's different about this one apart from this file being static="false".

I've tried amending this in the Metadata.xml but it doesn't seem to have had an effect:

<attr path="/api/package[@name='com.creditcall.cardeasemobile']/class[@name='DeferredAuthorizationReason']" name="static">true</attr>
ASandyBear
  • 21
  • 3
  • Hi, you can refer to [this](https://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean), it explains `cannot find symbol`. – Robbit Feb 09 '18 at 05:43

0 Answers0