打包运行出错、调整加载动态库方式
This commit is contained in:
parent
ca37066696
commit
9d3d5b2645
25
pom.xml
25
pom.xml
|
@ -26,6 +26,12 @@
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
@ -128,6 +134,7 @@
|
||||||
<build>
|
<build>
|
||||||
<finalName>${project.artifactId}</finalName>
|
<finalName>${project.artifactId}</finalName>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
<!-- 只保留一个 spring-boot-maven-plugin -->
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
@ -142,6 +149,7 @@
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<!-- 拷贝依赖到 lib 目录 -->
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-dependency-plugin</artifactId>
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
@ -153,7 +161,6 @@
|
||||||
<goal>copy-dependencies</goal>
|
<goal>copy-dependencies</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<!-- 拷贝项目依赖包到lib/目录下 -->
|
|
||||||
<outputDirectory>${project.build.directory}/lib</outputDirectory>
|
<outputDirectory>${project.build.directory}/lib</outputDirectory>
|
||||||
<overWriteReleases>false</overWriteReleases>
|
<overWriteReleases>false</overWriteReleases>
|
||||||
<overWriteSnapshots>false</overWriteSnapshots>
|
<overWriteSnapshots>false</overWriteSnapshots>
|
||||||
|
@ -162,27 +169,15 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<layout>ZIP</layout>
|
|
||||||
<includes>
|
|
||||||
<include>
|
|
||||||
<groupId>nothing</groupId>
|
|
||||||
<artifactId>nothing</artifactId>
|
|
||||||
</include>
|
|
||||||
</includes>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
|
<!-- Javadoc 插件 -->
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
<version>3.0.0</version>
|
<version>3.0.0</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
||||||
<!-- 打包时将 resource 下的文件一起打包 -->
|
<!-- 打包时将 resource 下的文件一起打包 -->
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.dpkj.modules.cardReader.service.impl;
|
||||||
import com.dpkj.common.vo.Result;
|
import com.dpkj.common.vo.Result;
|
||||||
import com.dpkj.modules.cardReader.service.CardReaderService;
|
import com.dpkj.modules.cardReader.service.CardReaderService;
|
||||||
import com.dpkj.modules.cardReader.utils.CardReaderSdk;
|
import com.dpkj.modules.cardReader.utils.CardReaderSdk;
|
||||||
import com.dpkj.modules.cardReader.utils.CardReaderUtil;
|
|
||||||
import com.dpkj.modules.cardReader.utils.SocialSecurityCardInfoVO;
|
import com.dpkj.modules.cardReader.utils.SocialSecurityCardInfoVO;
|
||||||
import com.dpkj.modules.cardReader.utils.UserInfoVO;
|
import com.dpkj.modules.cardReader.utils.UserInfoVO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -17,7 +16,6 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||||
@Service
|
@Service
|
||||||
public class CardReaderServiceImpl implements CardReaderService {
|
public class CardReaderServiceImpl implements CardReaderService {
|
||||||
|
|
||||||
private CardReaderSdk cardReaderSdk = CardReaderUtil.getCardReaderSDK();
|
|
||||||
@Value("${IDCardReader.waitingTime}")
|
@Value("${IDCardReader.waitingTime}")
|
||||||
private Long waitingTime;
|
private Long waitingTime;
|
||||||
private final Object cardReaderLock = new Object();
|
private final Object cardReaderLock = new Object();
|
||||||
|
@ -32,7 +30,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
try {
|
try {
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][33]: 开始连接指定设备与电脑端口,即打开端口");
|
log.info("[CardReaderServiceImpl][IDCardReader][33]: 开始连接指定设备与电脑端口,即打开端口");
|
||||||
// 连接指定设备与电脑端口,即打开端口
|
// 连接指定设备与电脑端口,即打开端口
|
||||||
handle = cardReaderSdk.ICC_Reader_Open("USB1");
|
handle = CardReaderSdk.INSTANCE.ICC_Reader_Open("USB1");
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][36]: 连接指定设备与电脑端口,即打开端口,返回句柄: {}", handle);
|
log.info("[CardReaderServiceImpl][IDCardReader][36]: 连接指定设备与电脑端口,即打开端口,返回句柄: {}", handle);
|
||||||
if (handle == null) {
|
if (handle == null) {
|
||||||
log.error("[CardReaderServiceImpl][IDCardReader][38]: 打开端口失败");
|
log.error("[CardReaderServiceImpl][IDCardReader][38]: 打开端口失败");
|
||||||
|
@ -44,7 +42,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
byte[] bytes = new byte[1024];
|
byte[] bytes = new byte[1024];
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][45]: 尝试读取 ID 卡");
|
log.info("[CardReaderServiceImpl][IDCardReader][45]: 尝试读取 ID 卡");
|
||||||
while (true) {
|
while (true) {
|
||||||
int idCard = cardReaderSdk.PICC_Reader_ReadIDCard(handle, bytes);
|
int idCard = CardReaderSdk.INSTANCE.PICC_Reader_ReadIDCard(handle, bytes);
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][48]: PICC_Reader_ReadIDCard读取 ID 卡,返回值: {}", idCard);
|
log.info("[CardReaderServiceImpl][IDCardReader][48]: PICC_Reader_ReadIDCard读取 ID 卡,返回值: {}", idCard);
|
||||||
|
|
||||||
long elapsedTime = System.currentTimeMillis() - startTime;
|
long elapsedTime = System.currentTimeMillis() - startTime;
|
||||||
|
@ -54,7 +52,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
}
|
}
|
||||||
if (idCard == 0) {
|
if (idCard == 0) {
|
||||||
try {
|
try {
|
||||||
userInfo = new UserInfoVO(cardReaderSdk);
|
userInfo = new UserInfoVO(CardReaderSdk.INSTANCE);
|
||||||
if (userInfo.getName() != null && !userInfo.getName().isEmpty()) {
|
if (userInfo.getName() != null && !userInfo.getName().isEmpty()) {
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][59]: 成功读取到用户信息,返回结果");
|
log.info("[CardReaderServiceImpl][IDCardReader][59]: 成功读取到用户信息,返回结果");
|
||||||
return Result.ok(userInfo);
|
return Result.ok(userInfo);
|
||||||
|
@ -71,7 +69,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
if (handle != null) {
|
if (handle != null) {
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][72]: 开始关闭端口,句柄: {}", handle);
|
log.info("[CardReaderServiceImpl][IDCardReader][72]: 开始关闭端口,句柄: {}", handle);
|
||||||
// 不管什么情况最终都要关闭端口
|
// 不管什么情况最终都要关闭端口
|
||||||
cardReaderSdk.ICC_Reader_Close(handle);
|
CardReaderSdk.INSTANCE.ICC_Reader_Close(handle);
|
||||||
log.info("[CardReaderServiceImpl][IDCardReader][75]: 端口关闭成功");
|
log.info("[CardReaderServiceImpl][IDCardReader][75]: 端口关闭成功");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +85,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
Long handle = null;
|
Long handle = null;
|
||||||
try {
|
try {
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][89]: 开始连接指定设备与电脑端口,即打开端口");
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][89]: 开始连接指定设备与电脑端口,即打开端口");
|
||||||
handle = cardReaderSdk.ICC_Reader_Open("USB1");
|
handle = CardReaderSdk.INSTANCE.ICC_Reader_Open("USB1");
|
||||||
if (handle == null) {
|
if (handle == null) {
|
||||||
log.error("[CardReaderServiceImpl][SocialSecurityCardReader][92]: 打开端口失败");
|
log.error("[CardReaderServiceImpl][SocialSecurityCardReader][92]: 打开端口失败");
|
||||||
return Result.error("打开端口失败,请检查设备连接");
|
return Result.error("打开端口失败,请检查设备连接");
|
||||||
|
@ -105,12 +103,12 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][105]: 读取社保卡信息超时,等待了 {} 毫秒。", waitingTime);
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][105]: 读取社保卡信息超时,等待了 {} 毫秒。", waitingTime);
|
||||||
return Result.error("读取社保卡信息超时,请重试。", -18);
|
return Result.error("读取社保卡信息超时,请重试。", -18);
|
||||||
}
|
}
|
||||||
int l = cardReaderSdk.ICC_Reader_GetStatus(handle, 0x01);
|
int l = CardReaderSdk.INSTANCE.ICC_Reader_GetStatus(handle, 0x01);
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][109]: 获取社保卡读取设备状态:结果{}", l);
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][109]: 获取社保卡读取设备状态:结果{}", l);
|
||||||
if (l == 0) {
|
if (l == 0) {
|
||||||
byte[] data = new byte[4096];
|
byte[] data = new byte[4096];
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][112]: 尝试读取社保卡基本信息");
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][112]: 尝试读取社保卡基本信息");
|
||||||
int i = cardReaderSdk.iReadCardBas(3, data);
|
int i = CardReaderSdk.INSTANCE.iReadCardBas(3, data);
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][114]: 读取社保卡基本信息,返回值: {}", i);
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][114]: 读取社保卡基本信息,返回值: {}", i);
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
java.lang.String bas = new java.lang.String(data, "GBK");
|
java.lang.String bas = new java.lang.String(data, "GBK");
|
||||||
|
@ -165,7 +163,7 @@ public class CardReaderServiceImpl implements CardReaderService {
|
||||||
if (handle != null) {
|
if (handle != null) {
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][166]: 开始关闭端口,句柄: {}", handle);
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][166]: 开始关闭端口,句柄: {}", handle);
|
||||||
// 关闭端口
|
// 关闭端口
|
||||||
cardReaderSdk.ICC_Reader_Close(handle);
|
CardReaderSdk.INSTANCE.ICC_Reader_Close(handle);
|
||||||
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][169]: 端口关闭成功");
|
log.info("[CardReaderServiceImpl][SocialSecurityCardReader][169]: 端口关闭成功");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
package com.dpkj.modules.cardReader.utils;
|
|
||||||
|
|
||||||
import com.dpkj.common.exception.RRException;
|
|
||||||
import com.sun.jna.Native;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
public class CardReaderUtil {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 多合一读卡器 实例,同时注册 CardReaderSdk 控件。
|
|
||||||
*
|
|
||||||
* @return CardReaderSdk 实例
|
|
||||||
* @throws RRException 如果注册控件失败,抛出此异常
|
|
||||||
*/
|
|
||||||
public static CardReaderSdk getCardReaderSDK() throws RRException {
|
|
||||||
try {
|
|
||||||
return Native.loadLibrary("SSSE32", CardReaderSdk.class);
|
|
||||||
} catch (UnsatisfiedLinkError e) {
|
|
||||||
log.info("[CardReader][AutoReplyPrint2.getCardReaderSDK] SDK注册失败 {}", e.getMessage());
|
|
||||||
throw new RRException("Failed to load CardReaderSdk library: ", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue