Java 加载动态库 dll 文件
不知道具体原理,但是,加载 dll 文件时,带路径或者更改 dll 文件的名字,都会报错。虽然库记载成功了,但是处女座认为这不可接受。于是有了这个解决方案。
在根目录为库创建软连接,然后使用 system.loadLibrary(“libname”) 来加载。事实证明,它时认软连接的。
上代码:
import com.seapine.surroundscm.api.*;
import java.lang.UnsupportedOperationException;
import java.lang.SecurityException;
import java.io.IOException;
import java.nio.file.*; public class SurroundSCMAPIExample {
static {
String arch = System.getProperty("sun.arch.data.model"); Path target; if(arch.equals("32"))
{
target = FileSystems.getDefault().getPath("lib","sscmapi.dll");
}
else
{
target = FileSystems.getDefault().getPath("lib64","sscmapi.dll");
} Path link = FileSystems.getDefault().getPath("sscmapi.dll"); try {
Files.deleteIfExists(link);
Files.createSymbolicLink(link, target);
} catch (IOException | UnsupportedOperationException | SecurityException e) {
if (e instanceof SecurityException) {
System.err.println("Permission denied!");
}
if (e instanceof UnsupportedOperationException) {
System.err.println("An unsupported operation was detected!");
}
if (e instanceof IOException) {
System.err.println("An I/O error occurred!");
}
System.err.println(e);
} System.loadLibrary("sscmapi");
} public static void main(String[] args)
{
SSCMContext context = new SSCMContext();
SSCMResult ret = SSCMAPI.connectRSA("localhost",
4900,
"",
"admin",
"",
context); if(SSCMAPI.SSCM_API_OK == ret.result)
System.out.println("Connection Succeeded");
else
System.out.println("Connection Failed: " +
SSCMAPI.getLastError(ret.result)); SSCMAPI.disconnect(context);
}
}
妥妥的,再看不到任何的报错。
不过这个方案有个坑,如果软链接文件是 read-only 的,创建软链接就有麻烦了,所以,在打包,或者是从仓库 get 时,要主要删掉软链接文件。
Java 加载动态库 dll 文件的更多相关文章
- Linux下c函数dlopen实现加载动态库so文件代码举例
dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...
- LoadLibrary加载动态库失败
[1]LoadLibrary加载动态库失败的可能原因以及解决方案: (1)dll动态库文件路径不对.此场景细分为以下几种情况: 1.1 文件路径的确错误.比如:本来欲加载的是A文件夹下的动态库a.dl ...
- 【转载】cocos2dx 中 Android NDK 加载动态库的问题
原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各 ...
- Windows平台LoadLibrary加载动态库搜索路径的问题
一.背景 在给Adobe Premiere/After Effects等后期制作软件开发第三方插件的时候,我们总希望插件依赖的动态库能够脱离插件的位置,单独存储到另外一个地方.这样一方面可以与其他程序 ...
- QT常用代码之加载动态库和弹出对话框
作者:朱金灿 来源:http://blog.csdn.net/clever101 加载动态库的代码: typedef void (*Execute)(); // 定义导出函数类型 QString st ...
- QLibrary 加载动态库
阅读本文大概需要 6.6分钟 一般情况下在没有头文件支持情况下,想要引入某个动态库,最好的办法就是使用「动态加载」的方法,在Qt中一般使用QLibyary来操作 常用 api QLibrary(con ...
- JAVA加载Properties配置资源文件
JAVA加载Properties配置资源文件 制作人:全心全意 配置文件(资源文件):以properties作为拓展名的文件 Java代码是如何加载properties文件的? 必须使用Propert ...
- 使用dlopen加载动态库
目录 概述 接口 C CMakeLists.txt src/main.c src/add.c ./dlopen_test C++ CMakeLists.txt src/main.cpp src/add ...
- QT/C++插件式框架、利用智能指针管理内存空间的实现、动态加载动态库文件
QT.C++插件式框架.主要原理还是 动态库的动态加载. dlopen()函数.下面为动态加载拿到Plugininstance对应指针.void**pp=(void**)dlsym(handle,&q ...
随机推荐
- 基于RGB与HSI颜色模型的图像提取法
现实中我们要处理的往往是RGB彩色图像.对其主要通过HSI转换.分量色差等技术来提出目标. RGB分量灰度化: RGB可以分为R.G.B三分量.当R=G=B即为灰度图像,很多时候为了方便,会直接利用某 ...
- 在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记
第一章:Maven概述 (1)Maven是一个项目构建工具,由apache提供,用Java开发的 (2)构建工具:Ant(蚂蚁),Maven(专家) (3)构建工具作用:帮助程序员进行项目的创建,目录 ...
- Django框架(十)--常用字段、参数、元信息、多对多关联关系
一.ORM字段 # AutoField() int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列 # IntegerField() ...
- Django框架(八)--单表增删改查,在Python脚本中调用Django环境
一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...
- Google Chrome 解决 “您的连接不是私密连接” 和被毒霸劫持
一.解决 “您的连接不是私密连接” 前一段时间,Chrome 突然显示出了“您的连接不是私密连接”,这下可难受了,大部分的网站打开都有问题. 找了各种方法,各种设置都是不行. 一.暴力.费力的方法直接 ...
- MySql数据库中的datediff函数
MySql数据库中的datediff函数:主要是用来返回两个日期之间相隔的天数 一半情况下是大日期在前,小日期在后的 这样写也是能够运行的 要注意查询结果:
- 微信小程序 vscode 自动保存 保存自动编译 微信开发者工具崩溃
修改vscode的自动保存延迟时间,将 auto save delay 选项 修改的长一点.
- python接口自动化框架
接口测框架 安装教程 需要3.5及以上版本的python pip install -r requirements.txt 使用说明 运行manage.py创建项目 创建的项目在projects目录下 ...
- centos7+docker 安装和部署crawlab分布式爬虫平台,并使用docker-compose管理docker
1.先决条件centos7+docker最新版本 sudo yum updat 2.配置一下镜像源,创建/etc/docker/daemon.conf文件,在其中输入如下内容 { "regi ...
- 分布式环境配置虚拟域名,phpstudy配置虚拟域名,集成环境配置域名,域名禁止访问forbidden怎么解决
重启Apache,测试: