Shekhar Jadhav
Shekhar Jadhav

Reputation: 1035

Codenameone: Unable to find packages during build

When I build my application I get following errors. Can you please let me know how to resolve it. My application needs to be supported on all platforms (Andriod, IOS, windows) and I don't want to write native code for all platforms separately. 

java:4: error: package java.lang.reflect does not exist
        import java.lang.reflect.UndeclaredThrowableException;
java:6: error: package javax.crypto does not exist
        import javax.crypto.Mac;
             ^
7: error: package javax.crypto.spec does not exist
       import javax.crypto.spec.SecretKeySpec;
java:48: error: cannot find symbol Mac hmac;
50: error: cannot find symbol
       [javac]              hmac = Mac.getInstance(crypto);

^ java:53: error: cannot find symbol [javac] SecretKeySpec macKey = ^ [javac] symbol: class SecretKeySpec [javac] location: class TokenGenerator java:55: error: cannot find symbol [javac] new SecretKeySpec(keyBytes, "RAW"); ^ [javac] symbol: class SecretKeySpec [javac] location: class TokenGenerator java:61: error: cannot find symbol [javac] } catch (GeneralSecurityException gse) { [javac] ^ java:63: error: cannot find symbol [javac] throw new UndeclaredThrowableException(gse); [javac] ^ symbol: class UndeclaredThrowableException [javac] location: class TokenGenerator

Upvotes: 1

Views: 166

Answers (1)

Shai Almog
Shai Almog

Reputation: 52760

Those packages aren't supported by Codename One. Reflection can't be implemented in a performant way on devices and shouldn't be used in general since it conflicts with obfuscation which is a recommended best practice for mobile.

Crypto is a large over designed package with export restrictions and reflection dependencies. We have a cn1lib extension for bouncy castle.

Upvotes: 1

Related Questions