• python调用jar包


    坑点记录

    问题: 通过java生成的jar包, 使用jpype调用jar包时总是提示找不到类

    错误方式1: 通过 jar cvf 方式进行手动打包

    错误方式2: 通过jpype的 -Djava.ext.dirs 参数来配置所有的依赖jar包

    正确方式: 通过maven的pom来配置build, 使得maven打包时生成一个带依赖的jar包. 

    1. 安装python和java环境

    1. 安装python环境, 建议安装python3.6.

    2. 安装python的第三方库jpype: pip install jpype1

    3. 安装java环境, 建议安装java1.8.

    注意事项: python版本和java版本必须是相同的位数. 即同为32位或同为64位.

     2. 安装配置maven仓库

    1. 安装maven,建议安装maven3.5.0

    2. 设置环境变量

    # 设置环境变量MAVEN_HOME
    MAVEN_HOME=D:Program Filesapache-maven-3.5.0in
    # 设置环境变量Path
    Path=%MAVEN_HOME%in;
    # 开启一个cmd创建,验证环境变量配置成功
    mvn -version
    View Code

    3. 创建repository目录: %MAVEN_HOME% epository

    4. 修改maven配置: %MAVEN_HOME%confsettings.xml

        主要完成两件事: 1. 配置maven镜像. 2. 配置本地仓库

    <?xml version="1.0" encoding="UTF-8"?>
    
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
      <localRepository>D:Program Filesapache-maven-3.5.0
    epository</localRepository>
    
      <mirrors>
        <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
        </mirror>
      </mirrors>
    
    </settings>
    View Code

    3. 安装IDE工具

    1. 安装python IDE, 建议安装PyCharm专业版.

    2. 安装java IDE, 建议安装IntelliJ IDEA

    1. 下载idea,并进行破解
    2. 基本配置
        2.1 修改字体, 设置快捷键
        2.2 maven仓库配置: Maven home directory 和 User settings file
    3. 基本使用
        系统配置: Ctrl + Alt + S
        导包提示: Alt + Enter  
        修改编码
    4. 安装插件: lombok
    5. 常用的maven功能: clean, compile, package
    View Code

    4. 经验总结

    1. 测试需要使用开发的java代码来完成测试时, 别忘记向开发索要pom文件.因为pom文件中会包含很多依赖包.

    2. python版本和java版本必须是相同的位数. 即同为32位或同为64位.

    3. 被引用的jar包在打包时,务必将依赖关系一并打包.否则提示找不到类.

    4. .class文件生成jar包方式:

        方式1: jar cvf recvThird.jar com 其中com是一个文件夹. 打包时注意文件夹的层级关系. 对于有很多依赖jar文件时,难度大

        方式2: 通过maven来package, 注意此时配置好build.务必保证是带依赖打包, 即 jar-with-dependencies. 建议使用这种方式.

        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>com.thrid.wstest.WstestApplication</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    View Code

    5. jar包因为存在中文, python调用时出现乱码. 将IDEA中的编码都改成了uft-8,但依然不能解决乱码问题. 最终通过python调用jar时指定编码集解决(-Dfile.encoding=UTF8)

    if not jpype.isJVMStarted():
        jpype.startJVM(
            jpype.get_default_jvm_path(),
            jvm_arg,
            "-Dfile.encoding=UTF8",
            "-ea",
            '-Xmx{}m'.format(max_memory)
        )
    View Code
  • 相关阅读:
    centos 无线网卡安装,网卡rtl8188ee
    centos mysqldb 安装
    centos 安装gcc时,出错:Found 10 pre-existing rpmdb problem(s), 'yum check' output follows:
    peewee 字段属性help_text的支持问题
    mysql查看字段注释(帮助信息)指令
    centos mysql 大量数据导入时1153 错误:1153
    php在centos下的脚本没有解析的问题
    [转]mysql分布式方案-分库拆表
    [转]Mysql海量数据存储和解决方案之一—分布式DB方案
    mysql 数据库字符集的指定
  • 原文地址:https://www.cnblogs.com/reconova-56/p/12629498.html
Copyright © 2020-2023  润新知