6
votes

Utilisation de ListView de Scala 2.9.2 avec Java 7 donne une erreur de compilation

Je travaille sur un projet qui utilise Scala 2.9.2 et Java 7.

Ce que j'essaie de faire est de créer une interface graphique à l'aide de Scala Listview. P>

Voici un petit code SNIPPET: P>

override lazy val peer: JList = new JList with SuperMixin


0 commentaires

3 Réponses :


1
votes

Le problème est que de nombreux composants balançoires ont été "générés" dans Java 7, conduisant à des incompatibilités. La bibliothèque Scala a certainement été compilée vers une version de Java <1.7. Je conseillerais de compiler votre code Scala contre Java 1.6. Vous pouvez toujours compiler votre code Java dans Java 1.7 et l'utiliser à partir de votre code SCALAA et, dans l'articleCode compilé contre Java 1.6, peut exécuter sur un JVM 1.7.

Mise à jour: Quelqu'un a trébuché contre le même problème: http://comments.gmane.org/gmane.comp.lang.scala .Debate / 9158


2 commentaires

Malgré cela n'a pas encore été corrigé à Scala. L'utilisation de la liste de liste dans mon application nécessiterait que mes utilisateurs disposent de JRE6 ou que je manque quelque chose?


Autant que je sache, cela est incorrect. Le code compilé contre Java 1.6 peut très bien être exécuté sur une version jvm 1.7 (c'est l'inverse autour de cela ne fonctionnera pas).



3
votes

a résolu ce problème en étendant la liste de ListView et en ajoutant un "pair tapé".

class ExtendedListView[A: ClassManifest] extends ListView[A] {
    lazy val typedPeer: JList[A] = peer.asInstanceOf[JList[A]]

    def selectionEmpty = typedPeer.isSelectionEmpty

    // Other functions omitted
}


0 commentaires

0
votes

J'ai écrit une petite bibliothèque swingplus , ce qui permet d'utiliser un listview Les deux lors de la compilation de Java 6 et Java 7+. Le problème (comme d'autres l'ont souligné) est la génération de balançoire en Java 7.


0 commentaires