2015-03-26 2 views
1

je suis arrivé plusieurs erreurs de compilation sur mon tout nouveau Codename Une application:sous-ensemble de Java pris en charge par Codename One

La construction se plaint de la classe FileNotFoundException et la méthode split String(). Une idée pourquoi?

xxx\Page.java:11: error: cannot find symbol 
import java.io.FileNotFoundException; 
    symbol: class FileNotFoundException 
    location: package java.io 

et

xxx\Page.java:97: error: cannot find symbol 
      final String[] parts = number_label.split("-"); 
    symbol: method split(String) 
    location: variable number_label of type String 

D'ailleurs, est-ce vrai qu'il ya une restriction à utiliser Java 1.5 dans CodenameOne? Je ne pouvais pas trouver où dire de compiler avec Java 7.

Meilleures salutations,

Répondre

1

EDIT: Cette réponse est un peu obsolète. Codename One prend en charge un subset of Java 8 maintenant bien que string.split() est toujours un appel d'API problématique. Codename One prend en charge un sous-ensemble de Java 5, vous ne devriez pas essayer de le modifier car le code de traduction du serveur repose sur les comportements bytecode du Java 5 cible et ne supporte qu'un sous-ensemble très spécifique de l'API. Le raisonnement est simple, puisque Codename One a plusieurs implémentations de VM (iOS, Dalvik/ART, XMLVM/ParparVM, blackberry etc.) il est vraiment difficile de tester de nouvelles choses (par exemple les nouveaux bytecodes) et c'est vraiment difficile d'ajouter de nouvelles API d'une manière qui sera totalement multi-plateforme. Vous pouvez utiliser StringUtils.split() pour implémenter cette fonctionnalité ainsi que StringTokenizer. Limiter les API nous permet également de garder l'exécutable efficace et petit (relativement). Comparé à une VM plus complète, nous sommes au moins 5 fois plus petits en production. Ceci est un gros problème pour les applications mobiles ...

Nous travaillons sur la consolidation des différentes machines virtuelles du côté serveur, ce qui nous permettra d'ajouter plus facilement les principales API VM dans le futur ainsi que des fonctionnalités comme le support de Java 8.

Vous pouvez en apprendre davantage dans cette réponse: How does Codename One work?

+0

Pour la plupart du monde, qui est utilisé pour travailler avec Java 7 plus probable, cela est tout à fait un point négatif. Quand pensez-vous que la prise en charge des versions plus récentes de Java sera disponible? – ygesher

+0

Java 7 n'est pas vraiment une amélioration, nous pourrions supporter Java 8 (lambdas) dans le futur mais n'ont pas de calendrier concret. Si vous faites référence à l'API complète, je doute que cela arrivera ... L'API complète est juste trop grande et comme nous devons emballer le tout, vous atteindrez rapidement la limite de 100 Mo pour les téléchargements OTA dans iTunes. –

+0

Mise à jour de la réponse avec de nouveaux détails car Java 8 est maintenant supporté. –