CoolProp 是一个开源的能源计算类库 但是其中需要用java原生native方法但是这里就需要一个类库,但是官网上给的类库(.dll)没有加包名,但是其内部编译没带类名称只能在maven仓库下的java包下 但是这样就给我们调用带来了困难 因为如果我们不写包名的话默认本包,给我们调用带来了困难
其解决方法如下
第一个方法:
我们可以用 java的反射机制来调用类下的方法

我只实现了第一个方法,

其源码在csdn的仓库上:
https://codechina.csdn.net/qq_40539437/cloud.git
其代码是
希望可以帮到你

由于官网上下载的只试用于windows,但在linux并不使用,于是我和团队花了1天去搞这个linux上可执行的文件libCoolProp.so

一.打包libCoolProp.so文件

1.下载代码上Coolprop官网下载 仓库上的代码(git clone https://github.com/CoolProp/CoolProp --recursive)详情可以查看官网(http://www.coolprop.org/coolprop/wrappers/Java/index.html)

(注意:如果只下载官网上已经成功打包的zip文件是不行的,因为里面依赖项较多,zip包里有的文件缺失导致编译失败)

2.linux 上需要的环境

cmake、git、g++、p7Zip、libpython-dev(版本大于等于2.7)、swig、python-six(版本与libpython-dev一致(差不多))、JDK

3.在下载CoolProp的文件夹下创建build文件夹

mkdir -p CoolProp/build && cd CoolProp/build

4.在build文件夹下用cmake 执行makefile文件对项目进行构建

cmake .. -DCOOLPROP_JAVA_MODULE=ON -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release

5.对项目进行打包 之后在build文件夹下就会出现.so文件

cmake --build .

二.在Docker上部署服务(采用DockerFile的形式)

1.准备相关的配置文件(*.yml,编译好的jar包,Dockerfile,Dockerfile.jc)

(1)*.yml就是项目的配置文件

(2)编译好的jar包就是项目的jar包

(3)DockerFile

FROM 600ly/jre8-with-gcc:0.1RUN mkdir /app && mkdir /cfgCOPY ./包名.jar /app/app.jar
COPY ./application.yml /app/application.yml
COPY ./application-druid.yml /app/application-druid.yml
COPY ./libCoolProp.so /usr/lib/libCoolProp.soRUN chmod -R 0666 /app && chmod -R 0666 /cfg################################EXPOSE 8083
WORKDIR /app
CMD ["java", "-jar", "./app.jar"]

(4)Dockerfile.jc

FROM gmaslowski/jre:8RUN apk add --no-cache g++

2.构建项目依赖

sudo docker build -t 600ly/jre8-with-gcc:0.1 -f ./Dockerfile.jc .

3.构建项目

sudo docker build -t esifs:0.1 .

4.运行项目

sudo docker run --name=esifs-test -d -p 21621:8083 esifs:0.1

5.查看日志

sudo docker logs -f esifs-test

三、需要注意的
在windows上用的是官网上直接下载的CoolProp.dll文件

而在linux上用的是libCoolProp.so文件

两者的差别很大

Windows:直接静态初始化lib下CoolProp.dll文件即可

Linux:

1.在java代码中虽然我们生成的文件是libCoolProp.so但是静态引用的名字必须是CoolProp

2.在构建的时候要把libCoolProp.so文件放到容器内部的/usr/lib下

如果闲打包麻烦可以直接上我的CSDN上的git下载 我以提供在跟项目的package文件夹中

Java 关于CoolProp的调用相关推荐

  1. java字典写实例,基于JAVA的新华字典接口调用代码实例

    基于JAVA的新华字典接口调用代码实例 接口描述:基于JA V A的新华字典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  2. 【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数

    文章目录 一.gradle.properties 中配置编译参数 二.在 build.gradle 中配置 BuildConfig.java 生成信息 三.编译后生成的 BuildConfig 类 A ...

  3. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  4. java高级用法之:调用本地方法的利器JNA

    文章目录 简介 JNA初探 JNA加载native lib的流程 本地方法中的结构体参数 总结 简介 JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做java native int ...

  5. Java如何跨语言调用Python/R训练的模型

    在 如何使用sklearn进行在线实时预测(构建真实世界中可用的模型) 这篇文章中,我们使用 sklearn + flask 构建了一个实时预测的模型应用.无论是 sklearn 还是 flask,都 ...

  6. java主程序怎样调用子程序_存过和函数以及在Java程序中的调用

    存储过程,函数都是数据库的对象. 创建和调用 存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序. 函数可以返回值,存过不能返回值.除此之外,一致. create procedure ...

  7. Java多线程实现异步调用

    在Java平台,实现异步调用的角色有如下三个角色:调用者. 提货单 .真实数据,一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单 .然后在过一断时间后凭提货单来获取真正的数据.去蛋糕店买 ...

  8. 在php中调用java接口吗,php 调用 java 接口

    php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...

  9. webview java调用js_android WebView java与js相互调用

    android WebView java与js相互调用 发布时间:2020-07-14 00:42:42 来源:51CTO 阅读:454 作者:向往宇宙 android webView js 使用 1 ...

  10. 命令行,使用java的java 命令,直接调用执行class文件

    目录 0.最基本使用,参照下面链接(以前整理的资料) 1.直接调用java文件■cmd 2.调用jar包(Main Class打包到 jar包时) 3.补充说明 4.运行时,设置系统变量 5.查看类运 ...

最新文章

  1. JustForex开始提供比特币和比特币现金支付方式
  2. 设置日期和时间的设计与实现
  3. 服务器系统安装ip配置,配置Win2008系统DNS服务器及主机的IP地址的具体步骤
  4. x86汇编指令集大全
  5. 数据库连接池技术--BoneCP
  6. 微信又添新功能!这个微信群可以学英语,而且全程免费
  7. transition动画与transform变换(了解
  8. 基本线程同步(五)使用Lock同步代码块
  9. java awt文件上传_springMVC实现前台带进度条文件上传的示例代码
  10. 可疑文件_鉴定文件是不是病毒木马的可靠方法 | 免费快速精准
  11. java jdk1.8使用_Java jdk1.8配置
  12. 【大事化小,小事化无】的意思和解释
  13. 数据治理(五):元数据管理
  14. axure文件如何加密_Axure教程:密码可见与不可见的切换设置
  15. [ZZ]美图秀秀怎么加水印
  16. ChucK初步(6)
  17. 射频领域你们如何管理测试夹具的?
  18. Python编写函数,计算某个员工的奖金发放额度,要求输入员工的营业额,输出对应的奖金总额
  19. 《灵飞经》3·印神无双 第十三章 剑奕星斗 2
  20. 【文字超分辨率】A Text Image Super-Resolution Generation Network without Pre-training 阅读笔记

热门文章

  1. Java飞机大战项目
  2. android 模拟器 锁屏,如何在模拟器中测试Android锁屏小部件?
  3. 换热站实际应用程序:西门子200smart PLC与威纶通触摸屏换热站程序、西门子1200plc与昆仑通态触摸屏换热站程序
  4. python拓展包之pymoo使用方法:多目标优化(NSGA2)
  5. 软件项目管理 第七章 进度计划
  6. 精进:如何成为一个很厉害的人--作者:采铜
  7. WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员
  8. 大数据之路,阿里巴巴大数据实践
  9. SQL Server 不允许保存更改的解决方法
  10. 计算机主机前声音口怎么设置吗,电脑前面的插孔没声音怎么设置