Java 关于CoolProp的调用
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的调用相关推荐
- java字典写实例,基于JAVA的新华字典接口调用代码实例
基于JAVA的新华字典接口调用代码实例 接口描述:基于JA V A的新华字典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...
- 【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数
文章目录 一.gradle.properties 中配置编译参数 二.在 build.gradle 中配置 BuildConfig.java 生成信息 三.编译后生成的 BuildConfig 类 A ...
- 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...
- java高级用法之:调用本地方法的利器JNA
文章目录 简介 JNA初探 JNA加载native lib的流程 本地方法中的结构体参数 总结 简介 JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做java native int ...
- Java如何跨语言调用Python/R训练的模型
在 如何使用sklearn进行在线实时预测(构建真实世界中可用的模型) 这篇文章中,我们使用 sklearn + flask 构建了一个实时预测的模型应用.无论是 sklearn 还是 flask,都 ...
- java主程序怎样调用子程序_存过和函数以及在Java程序中的调用
存储过程,函数都是数据库的对象. 创建和调用 存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序. 函数可以返回值,存过不能返回值.除此之外,一致. create procedure ...
- Java多线程实现异步调用
在Java平台,实现异步调用的角色有如下三个角色:调用者. 提货单 .真实数据,一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单 .然后在过一断时间后凭提货单来获取真正的数据.去蛋糕店买 ...
- 在php中调用java接口吗,php 调用 java 接口
php 需要开启 curl模块 /* * HTTP 请求函数封装 */ function http_request_cloudzone($url, $data){ //var_dump($url.&q ...
- webview java调用js_android WebView java与js相互调用
android WebView java与js相互调用 发布时间:2020-07-14 00:42:42 来源:51CTO 阅读:454 作者:向往宇宙 android webView js 使用 1 ...
- 命令行,使用java的java 命令,直接调用执行class文件
目录 0.最基本使用,参照下面链接(以前整理的资料) 1.直接调用java文件■cmd 2.调用jar包(Main Class打包到 jar包时) 3.补充说明 4.运行时,设置系统变量 5.查看类运 ...
最新文章
- JustForex开始提供比特币和比特币现金支付方式
- 设置日期和时间的设计与实现
- 服务器系统安装ip配置,配置Win2008系统DNS服务器及主机的IP地址的具体步骤
- x86汇编指令集大全
- 数据库连接池技术--BoneCP
- 微信又添新功能!这个微信群可以学英语,而且全程免费
- transition动画与transform变换(了解
- 基本线程同步(五)使用Lock同步代码块
- java awt文件上传_springMVC实现前台带进度条文件上传的示例代码
- 可疑文件_鉴定文件是不是病毒木马的可靠方法 | 免费快速精准
- java jdk1.8使用_Java jdk1.8配置
- 【大事化小,小事化无】的意思和解释
- 数据治理(五):元数据管理
- axure文件如何加密_Axure教程:密码可见与不可见的切换设置
- [ZZ]美图秀秀怎么加水印
- ChucK初步(6)
- 射频领域你们如何管理测试夹具的?
- Python编写函数,计算某个员工的奖金发放额度,要求输入员工的营业额,输出对应的奖金总额
- 《灵飞经》3·印神无双 第十三章 剑奕星斗 2
- 【文字超分辨率】A Text Image Super-Resolution Generation Network without Pre-training 阅读笔记
热门文章
- Java飞机大战项目
- android 模拟器 锁屏,如何在模拟器中测试Android锁屏小部件?
- 换热站实际应用程序:西门子200smart PLC与威纶通触摸屏换热站程序、西门子1200plc与昆仑通态触摸屏换热站程序
- python拓展包之pymoo使用方法:多目标优化(NSGA2)
- 软件项目管理 第七章 进度计划
- 精进:如何成为一个很厉害的人--作者:采铜
- WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员
- 大数据之路,阿里巴巴大数据实践
- SQL Server 不允许保存更改的解决方法
- 计算机主机前声音口怎么设置吗,电脑前面的插孔没声音怎么设置