Je sais que c'est quelque chose de stupide, mais pour une raison quelconque, Jython refuse de trouver Javax.swing. J'utilise Java 1.6.0_11. Ceci est mon script de démarrage: Ma sortie ressemble à: p>
3 Réponses :
J'utilise Java 1.6.0_11 P>
Non, vous utilisez P>
[Java Hotspot (TM) Client VM (Sun Microsystems Inc.)] sur Java1.6.0_10 strong> p> blockQuote>
Que se passe-t-il si vous supprimez le Cachedir à partir du répertoire de distribution Jython et réessayez? P>
Aussi, pourquoi définissez-vous explicitement le point de classe? Pourquoi pas simplement p>
xxx pré> ? P> blockQuote>
J'utilise le pot de Jython autonome, qui ne fait pas la mise en cache. Et je ne peux pas courir cela de -jar parce que je vais éventuellement commencer à ajouter d'autres pots à la classe de classe.
Vous pouvez activer la mise en cache même lorsque vous utilisez le pot autonome. Voir ma réponse dans ce fil.
Le plus probable Jython ne scanne pas vos paquets. Au démarrage, Jython essaie de passer par le bocal et les fichiers de classe sur son chemin et scanner pour les packages Java. Cela est nécessaire car il n'ya aucun moyen de rechercher des packages Java par réflexion. La numérisation de package peut être désactivée délibérément, ou vous pouvez manquer de privilèges d'écriture où il souhaite écrire les informations mises en cache, voir http : //wiki.python.org/jython/packagesCanning Pour plus. La meilleure façon d'importer des classes Java est de le faire explicitement de classe par classe, comme: Cette méthode doit toujours fonctionner, même si la numérisation de package est désactivée ou ne pouvant pas être incapable de fonctionner, et est-ce que l'approche recommandée (bien que cela puisse être un peu fastidieux). Si vous souhaitez importer des packages (ou si vous souhaitez faire "à partir de javax.swing Import *", qui dépend également de la numérisation de package - mais est découragé), vous devrez déterminer pourquoi la numérisation de votre colis ne fonctionne pas. p> p>
La chose "de l'objet d'importation de paquet" a fonctionné. Je vais déterminer pourquoi la balayage de l'emballage ne fonctionne pas, mais au moins j'ai quelque chose à faire. Merci frank! Continuez ce bon travail!
J'ai eu des problèmes similaires, et il s'avère que depuis que la Standalone Jython Dist ne supporte pas la mise en cache, elle ne supporte pas non plus l'approche "Importer *". strong> Ceci n'est pas clairement documenté dans le Documents Jython officiels, mais j'ai conclu cela en fonction de plusieurs rapports de bogues: notable de ce dernier lien: P> Ainsi que l'OTI a noté, en autonome, vous devez faire des importations complètes pour réussir. P>
BlockQuote> Pour corriger votre problème, Utilisez la norme non autonome JYTON.JAR forte> générée en installant Jython à l'aide de l'option "Standard". P> Si vous vouliez emballer et distribuer Jython.jar avec votre application, si un utilisateur n'a pas d'installation Jython, vous devrez également copier / remplir le dossier "LIB" complet de l'installation de Jython Répertoire dans l'emplacement où vous finissez par placer Jython.jar. Cela permet d'accéder au python stdlib qui n'est pas inclus dans le fichier JAR standard. P> Mise à jour forte>:
Après avoir joué plus, je pense avoir une solution pour activer les importations de type "importer *", même lors de l'utilisation du pot autonome. Tout ce qui doit être fait est d'activer la mise en cache! P> Vous pouvez le faire en ajoutant les options suivantes à la JVM lors de l'exécution Jython: P> -dpython.cachedir.skip = faux fort> -dpython.cachedir = chemin de cache souhaité p>
blockquote> (Notez que le deuxième argument est facultatif, et s'il est vide, une valeur par défaut sera utilisée) p> Si vous avez un problème d'exécution de l'interactiveconsole intégré dans une application (qui est ce que mon problème était) Vous pouvez ajouter ces propriétés avant d'initialiser la console: p>
Est-il possible de modifier le pot autonome de sorte que python.cachedir.skip est défini sur FALSE par défaut?
C'est une question / un problème extrêmement courant. Toute chance que vous changiez le titre "Pourquoi Jython refuse-t-il de trouver mon paquet Java?" De cette façon, davantage de gens trouveront probablement cela.
J'ai changé le nom - vous avez raison, cela peut arriver à n'importe qui.
Merci de changer le nom!