2011-10-24 1 views
4

Il est un outil Java (il est appelé Mallet) http://mallet.cs.umass.edu/download.php que je veux utiliser dans mon projet .NET.Conversion Java à la bibliothèque .NET en utilisant IKVMC - Attention IKVMC0108: pas un fichier de classe

Pour convertir cet outil en bibliothèque .NET, j'ai d'abord essayé de le compiler dans un fichier .jar unique en utilisant Apache Ant. J'ai fait tout ce qui correspond aux instructions au lien ci-dessus.

  1. Télécharger Developer Release à partir du référentiel Mercurial. Télécharger Apache Ant, installer JDK, définir JAVA_HOME var pour utiliser Apache Ant. Utilisation de Ant J'ai construit un seul fichier mallet.jar.

Et puis je voudrais convertir mallet.jar à la bibliothèque .NET en utilisant IKVMC. Lors de la conversion, j'ai beaucoup d'avertissements tels que:

Warning IKVMC0108: not a class file "cc/mallet/util/tests/TestPriorityQueue$1.cl 
ass", including it as resource 
    (class format error "51.0") 

En dépit de ces avertissements, mallet.dll a été créé. Mais quand j'essaie de me référer à mon projet .NET, il semble "vide". Il n'a pas de classes ou d'espaces de noms. Je n'oublie pas de faire référence à IKVM.OpenJDL.Core.

Et c'est inhabituel que je ne trouve pas les mêmes problèmes dans Google.

Je pense que ce problème est dans les avertissements. Et je n'ai jamais travaillé avec Ant et je ne comprends pas tout le processus exactement.

Répondre

6

La version du format de la classe 51 a été introduit avec Java 7.

IKVM probablement ne supporte pas que les points la version encore et le nom du fichier que vous citez (cc/mallet/util/tests/TestPriorityQueue$1.class) à une classe interne anonyme de TestPriorityQueue qui certainement est nécessaire pour que la bibliothèque fonctionne correctement.

Ma suggestion: compiler Mallet avec une ancienne JDK ou au moins en utilisant les -source et -target commutateurs sur 6 (pour vous assurer qu'il est la compilation pour Java 6).

+0

Java 7 désinstallé, Java 6 installé. J'ai les mêmes erreurs. –

+0

@ValentinP .: ** mêmes ** erreurs? * Y compris * le même numéro de version? Ensuite, vous n'avez pas nettoyé correctement (c'est-à-dire qu'il y avait encore des fichiers '.class' plus anciens). Aussi: désinatller Java 7 ne devrait pas être nécessaire. Définir 'JAVA_HOME' pour pointer vers le JDK souhaité devrait suffire. –

+0

Ensuite, assurez-vous de supprimer tous les fichiers '.class' dans le répertoire de construction avant de reconstruire le fichier jar. –

Questions connexes