def _cli(self): ##### jnius import jnius_config LIQUIBASE_CLASSPATH: list = [ self.liquibase_dir + "/liquibase.jar", self.liquibase_lib_dir + "/*", self.liquibase_internal_dir + "/*", self.liquibase_internal_lib_dir + "/*", self.jdbc_drivers_dir + "/*"] if self.additional_classpath: LIQUIBASE_CLASSPATH.append(self.additional_classpath) if not jnius_config.vm_running: jnius_config.add_classpath(*LIQUIBASE_CLASSPATH) else: log.warning("VM is already running, can't set classpath/options") log.debug("classpath: %s" % jnius_config.get_classpath()) from jnius import JavaClass, MetaJavaClass, JavaMethod ##### class LiquibaseCommandLine(JavaClass, metaclass=MetaJavaClass): __javaclass__ = "liquibase/integration/commandline/LiquibaseCommandLine" # methods execute = JavaMethod("([Ljava/lang/String;)I") return LiquibaseCommandLine()
def _init_anserini(): global anserini_monkey if anserini_monkey: return # jnius monkypatching import jnius_config anserini_found = False for j in jnius_config.get_classpath(): if "anserini" in j: anserini_found = True break assert anserini_found, 'Anserini jar not found: you should start PyTerrier, e.g. with '\ + 'pt.init(boot_packages=["io.anserini:anserini:0.9.2:fatjar"])' jnius_config.set_classpath = lambda x: x anserini_monkey = True #this is the Anserini early rank cutoff rule from matchpy import Wildcard, ReplacementRule, Pattern from .transformer import RankCutoffTransformer, rewrite_rules x = Wildcard.dot('x') _brAnserini = Wildcard.symbol('_brAnserini', AnseriniBatchRetrieve) def set_k(_brAnserini, x): _brAnserini.k = int(x.value) return _brAnserini rewrite_rules.append(ReplacementRule( Pattern(RankCutoffTransformer(_brAnserini, x) ), set_k ))
def getClasspath(self): """ Retrieves the classpath the JVM will use. :rtype: list """ return jnius_config.get_classpath()
def __init__(self, *args, fb_terms=10, fb_docs=3, **kwargs): """ Args: index_like: the Terrier index to use fb_terms(int): number of terms to add to the query fb_docs(int): number of feedback documents to consider """ global terrier_prf_package_loaded #if not terrier_prf_package_loaded: # pt.extend_classpath("org.terrier:terrier-prf") # terrier_prf_package_loaded = True #rm = pt.ApplicationSetup.getClass("org.terrier.querying.RM3").newInstance() import jnius_config prf_found = False for j in jnius_config.get_classpath(): if "terrier-prf" in j: prf_found = True break assert prf_found, 'terrier-prf jar not found: you should start Pyterrier with '\ + 'pt.init(boot_packages=["org.terrier:terrier-prf:0.0.1-SNAPSHOT"])' rm = pt.autoclass("org.terrier.querying.AxiomaticQE")() self.fb_terms = fb_terms self.fb_docs = fb_docs kwargs["qeclass"] = rm super().__init__(*args, **kwargs)
def add_classpath(self, *claspath): if jnius_config.vm_running: raise ValueError( "VM is already running, can't set classpath/options; VM started at %s" % jnius_config.vm_started_at) jnius_config.add_classpath(*claspath) log.info("VM Classpath: %s" % jnius_config.get_classpath())
def javacommand(): """Returns the start of the java command including the Anserini class path""" from jnius_config import get_classpath from pyserini.pyclass import configure_classpath command = ["{}/bin/java".format(os.environ["JAVA_HOME"]), "-cp"] command.append(":".join(get_classpath())) return command
def _check_terrier_prf(): import jnius_config global _terrier_prf_package_loaded if _terrier_prf_package_loaded: return for j in jnius_config.get_classpath(): if "terrier-prf" in j: _terrier_prf_package_loaded = True break assert _terrier_prf_package_loaded, _terrier_prf_message
def init_pyjnius(): if not jnius_config.vm_running: if "JAVA_HOME" not in os.environ: logger.info("'JAVA_HOME' environment variable missing, " "trying to get from settings.py") os.environ["JAVA_HOME"] = settings.JAVA_HOME logger.info("JAVA_HOME set to '{}'".format(os.environ["JAVA_HOME"])) BASE_DIR = os.path.dirname(os.path.abspath(__file__)) jnius_config.add_options('-Djava.awt.headless=true') jnius_config.add_options('-Xmx1536m') jnius_config.set_classpath( os.path.join(BASE_DIR, "simccs", "lib", "simccs-app-1.0-jar-with-dependencies.jar")) logger.info("Initialized jnius with classpath={}".format( jnius_config.get_classpath())) import jnius # noqa
def __init__(self, *args, fb_terms=10, fb_docs=3, **kwargs): global terrier_prf_package_loaded #if not terrier_prf_package_loaded: # pt.extend_classpath("org.terrier:terrier-prf") # terrier_prf_package_loaded = True #rm = pt.ApplicationSetup.getClass("org.terrier.querying.RM3").newInstance() import jnius_config prf_found = False for j in jnius_config.get_classpath(): if "terrier-prf" in j: prf_found = True break assert prf_found, 'terrier-prf jar not found: you should start Pyterrier with '\ + 'pt.init(boot_packages=["org.terrier:terrier-prf:0.0.1-SNAPSHOT"])' rm = pt.autoclass("org.terrier.querying.RM3")() self.fb_terms = fb_terms self.fb_docs = fb_docs kwargs["qeclass"] = rm super().__init__(*args, **kwargs)
import jnius_config import os _basedir = os.path.dirname(os.path.abspath(__file__)) _parentdir = os.path.dirname(_basedir) _resources_dir = os.path.join(_basedir, 'resources') jnius_config.add_options('-Xmx512m', '-XX:ParallelGCThreads=2') # We set both CLASSPATH environment variable and jnius' internal setting because jnius is kinda cranky. jnius_config.set_classpath( '/Users/liuman/Documents/semeval2018/twitter_emoij_prediction/tweets/resources/ark-tweet-nlp-0.3.2.jar' ) print(jnius_config.get_classpath()) # print(*(os.path.join(_resources_dir, jar) for jar in os.listdir(_resources_dir) if jar.endswith('.jar'))) print(os.environ.get('CLASSPATH')) # os.environ['CLASSPATH'] = u':'.join(jnius_config.get_classpath()) + ((':' + os.environ.get('CLASSPATH')) if os.environ.get('CLASSPATH') else '') # os.environ['CLASSPATH'] = '/Users/liuman/Documents/semeval2018/twitter_emoij_prediction/tweets/resources/ark-tweet-nlp-0.3.2.jar' os.environ[ 'CLASSPATH'] = '/Users/liuman/Documents/semeval2018/twitter_emoij_prediction/tweets/resources/ark-tweet-nlp-0.3.2.jar' print(os.environ['CLASSPATH']) from jnius import autoclass model_filename = os.path.join( _resources_dir, 'ark_tweet_nlp-20120919.model' ) # do not change. problem with pickling and unpickling across filesystems? Model = autoclass('cmu.arktweetnlp.impl.Model') print(Model) print(dir(Model)) print(model_filename) _model = Model.loadModelFromText(model_filename)
def get_classpath(): return jnius_config.get_classpath()
# coding:utf-8 import jnius_config from os.path import dirname, abspath hanlp_modue = dirname(abspath(dirname(__file__))) + "/hanlp/" jnius_config.add_options('-Xrs', '-Xmx4G') jnius_config.set_classpath(".:" + hanlp_modue + "hanlp-1.5.2.jar:" + hanlp_modue) from jnius import autoclass print jnius_config.get_classpath() from jnius import PythonJavaClass HanLP = autoclass('com.hankcs.hanlp.HanLP') content = '聘任周克军女士执行总裁、毛新礼先生、董绍学先生、张文先生为公司副总经理,张明为总园艺师,李思先生为副总会计师,王五为总工程师,赵六为财务总监。' segments = [] if isinstance(content, str) and len(content) > 0: # java.util.List result = HanLP.segment(content).listIterator() while result.hasNext(): tempString = result.next().toString() segments.append(tempString) for i in segments: print i
import os import jnius_config from concurrent.futures import ThreadPoolExecutor if not jnius_config.vm_running: jar_path = os.path.realpath( os.path.join(os.path.dirname(__file__), 'target', 'pyjnius-multithreading-java-0.0.1.jar')) if jar_path not in jnius_config.get_classpath(): jnius_config.add_classpath(jar_path) from jnius import autoclass PyJniusExample = autoclass('aoka.sample.PyJniusExample') def run(tid): global PyJniusExample instance = PyJniusExample(tid) _ = instance.process(tid) for _ in range(10000): instance.validate(tid) def main(): for i in range(500): if i % 10 == 0: print("iterate", i) with ThreadPoolExecutor(16) as e: futures = [e.submit(run, i + 1) for i in range(16)]
from collections import defaultdict from capreolus.utils.loginit import get_logger from tqdm import tqdm import pytrec_eval import numpy as np import jnius_config import os from capreolus.collection import COLLECTIONS from capreolus.utils.common import get_capreolus_base_dir if not jnius_config.get_classpath( ) == "{0}/capreolus/anserini-0.7.0-fatjar.jar".format( get_capreolus_base_dir()): try: jnius_config.set_classpath( "{0}/capreolus/anserini-0.7.0-fatjar.jar".format( get_capreolus_base_dir())) except: raise Exception("The classpath is: {0}".format( jnius_config.get_classpath())) import functools import torch from capreolus.pipeline import Pipeline, cli_module_choice, modules logger = get_logger(__name__)
logger = logging.getLogger('pyMOEA') logger.addHandler(logging.NullHandler()) try: JAVA_HOME = os.environ['JAVA_HOME'] except KeyError: JAVA_HOME = r'C:\Program Files (x86)\Java\jre6' # r'C:\Program Files\Java\jdk1.8.0_31' os.environ['JAVA_HOME'] = JAVA_HOME os.environ['PATH'] += r';%s\bin;%s\jre\bin\server' % tuple([JAVA_HOME] * 2) try: import jnius_config except ValueError as e: logging.error("Failed to import jinus (Has it been previously initialized?)") logging.debug(jnius_config.get_classpath()) # Classpath must be configured moea_path = r'D:\JYU\MOEAFramework-2.12' moea_clspath = os.listdir(os.path.join(moea_path, 'lib')) # moea_clspath = [ # 'bin', # 'lib', # 'build\MOEAFramework-2.3\lib', # 'lib\commons-cli-1.2.jar', # 'lib\commons-codec-1.8.jar', # 'lib\commons-lang3-3.1.jar', # 'lib\commons-math3-3.1.1.jar', # 'lib\jcommon-1.0.20.jar', # 'lib\jfreechart-1.0.15.jar',