[JAVA] Importez des classes dans des fichiers jar directement à partir d'un script Python

Il s'agit d'une méthode pour importer la classe dans le fichier jar directement à partir du script Python.

Cela ne dépend pas de CLASSPATH, donc si vous avez un environnement dans lequel Java et Jython peuvent s'exécuter Il permet de conditionner facilement l'intégration entre Python et Java.

Ceci est utile, par exemple, lorsque vous souhaitez utiliser l'héritage de Java et SQLite en même temps dans Python. Jython est un module standard et ne prend pas en charge SQLite, donc un pilote JDBC est requis, Si vous pouvez lire le fichier jar du pilote JDBC directement à partir du script Python, Vous pouvez utiliser les classes Java et SQLite de Python en ajoutant simplement les fichiers requis.

Jouez avec sys.path

test.py


import.sys
sys.path.append("/path/to/hogehoge.jar")
import Hogehoge

Cela fonctionne avec! Il y avait des informations selon lesquelles c'était inutile. Il semble que vous deviez charger les classes dedans, pas simplement les transmettre.

ClassPathHacker

ClassPath Hacker semble être une solution. http://www.jython.org/jythonbook/en/1.0/appendixB.html#working-with-classpath

Voici un exemple d'appel du pilote JDBC de sqlite à partir de jython.

test2.py


from java.lang import Class
from java.sql import DriverManager

class classPathHacker:
    import java.net.URLClassLoader

    def addFile(self, s):
        sysloader = self.java.lang.ClassLoader.getSystemClassLoader()
        sysclass = self.java.net.URLClassLoader
        method = sysclass.getDeclaredMethod("addURL", [self.java.net.URL])
        method.setAccessible(1)
        f = self.java.io.File(s)
        method.invoke(sysloader, [f.toURL()])

c = classPathHacker()
c.addFile("/path/to/sqlite-jdbc.jar")
jdbc_url = "jdbc:sqlite:/path/to/database.db"
driver = "org.sqlite.JDBC"
Class.forName(driver).newInstance()
con = DriverManager.getConnection(jdbc_url)
#Au dessous de

Je ne suis pas sûr, mais rendre URLClassLoader.addURL accessible de force On dirait que vous chargez une classe.

Recommended Posts

Importez des classes dans des fichiers jar directement à partir d'un script Python
Importer dynamiquement des scripts en Python
Extraire des chaînes de fichiers avec Python
Python depuis ou import
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
OCR à partir de PDF en Python
Copiez récursivement les fichiers du répertoire directement sous le répertoire en utilisant Python
Autoriser Python à sélectionner la chaîne de caractères du fichier d'entrée dans le dossier
Translocation de fichiers CSV avec Python Partie 1
Travailler avec LibreOffice en Python: import
Obtenir des données de Quandl en Python
Manipuler des fichiers et des dossiers en Python
Lire et utiliser des fichiers Python à partir de Python
Gestion des fichiers JSON en Python
Téléchargez des fichiers Google Drive en Python
À propos de Python, à partir et à l'importation, comme
Trier les gros fichiers texte en Python
Lire des fichiers en parallèle avec Python
Exécutez des scripts Python de manière synchrone à partir de C #
Exporter et exporter des fichiers en Python
python> lien> from __future__ import print_function> Autoriser Python 3.X print () à être utilisé dans Python 2.X
Vérifier les modules installés à partir du script Python
Exécutez le script Python à partir de Cisco Memorandum_EEM
Lecture à partir de fichiers texte et SQLite avec Python (+ Pandas), R, Julia (+ DataFrames)
Obtenez des options en Python à partir des fichiers JSON et des arguments de ligne de commande
Trouver des fichiers comme Linux Find en Python
Arborescence de sortie des fichiers en Python
Relancé de "pas d'accès Internet" en Python
Empêcher le double lancement de cron en Python
Des chercheurs de sociétés pharmaceutiques ont résumé les classes en Python
PUT gzip directement dans S3 en Python
Tapez les annotations pour Python2 dans les fichiers stub!
Je veux utiliser jar de python
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Référence du fichier INI en Python ou Ruby
Je ne peux pas déboguer les scripts python dans Eclipse
Modèle pour l'écriture de scripts batch en python
Automatisez les tâches en manipulant des fichiers en Python
Télécharger des images à partir de la liste d'URL en Python
Obtenez le niveau de la batterie de SwitchBot avec Python
Lire et écrire des fichiers JSON avec Python
Exemple de gestion des fichiers eml en Python
Générer une classe à partir d'une chaîne en Python
Générer un langage C à partir d'une expression S avec Python
Convertir de Markdown en HTML en Python
Obtenez la probabilité de précipitation de XML avec Python
Téléchargez des fichiers dans n'importe quel format en utilisant Python
Importation de modules et gestion des exceptions en python
Erreur d'importation: aucun module nommé "xxxxxx" dans Python3
Obtenir l'historique des métriques de MLflow en Python
Je veux obtenir / exécuter des variables / fonctions / classes de fichiers externes à partir de Python
Envoyez un e-mail directement en extrayant un enregistrement MX de votre adresse e-mail en Python
Obtenez des données de séries chronologiques de k-db.com avec Python
[Python] Récupérez les fichiers dans le dossier avec Python
Convertir le fichier FBX en ASCII <-> BINARY en Python
Étude de Python Hour7: Comment utiliser les classes
Importer un fichier Excel depuis Python (enregistré dans DB)
Étude à partir de Python Lecture et écriture de fichiers Hour9
Résoudre l'erreur d'écriture japonaise UnicodeEncodeError dans le fichier Python
Du dessin de fichier au graphique en Python. Élémentaire élémentaire