Mon application contient un fichier jar tiers (com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar) qui est compilé dans Java6. J'ai réussi à l'utiliser sur Tomcat 5.5 qui fonctionne Java5 mais quand j'ai essayé de déployer la même application sur JBoss 5.1 - Je reçois l'erreur:
UnsupportedClassVersionError qui se produit uniquement dans JBoss 5.1
[org.jboss.detailed.classloader.ClassLoaderManager] (main) Unexpected error during load of:testdata.SomeAnnotation java.lang.UnsupportedClassVersionError: Bad version number in .class file
que j'ai réalisé que cela arrive non seulement à moi. as described here.
mes questions:
1) pourquoi est-il possible d'utiliser ce pot dans les serveurs web tels que tomcat mais il dérange encore Jboss 5.1?
2) Pourquoi le chargeur de classe Jboss charge-t-il l'implémentation Jweaver de l'application à utiliser pour charger le framework et n'utilise pas l'implémentation de Jboss aspectJ? Peut-être que je devrais configurer son chargement de classe à parent-premier et cela va résoudre ce problème?
Alors, comment ai-je pu exécuter les mêmes classes Java6 lors de l'exécution de mon application sur Tomcat? ils utilisent le même Java JDK (1.5) - je pense qu'il est en quelque sorte lié au mécanisme de chargement de classe JBoss – Spiderman
Lorsque vous compilez un jar dans Java 6 vous pouvez spécifier une cible de Java 5, cependant une JVM Java 5.0 ne chargera pas Java 6 classe indépendamment du fonctionnement du classloader. c'est-à-dire qu'il n'y a rien que le classloader puisse faire sans transcoder les classes au fur et à mesure qu'elles les chargent (je ne connais aucun classloader qui le fait) et il serait très dangereux de le faire. –