jni 调用dll 项目直接停止

lazy0327 2018-03-06 04:33:57
接上一个问题,解决了调用前各种报错的原因之后,应该是成功调用了,
但尝试多遍 每次都是一到调用dll的代码处 项目直接停止了 并报如下错误信息,
我想请问一下可能出现此问题的原因和解决方式。
另外是否需要贴出来E:\git\eclipse\hs_err_pid10000.log这个日志文件啊

#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x68f47b50, pid=10000, tid=0x00002358
#
# JRE version: Java(TM) SE Runtime Environment (8.0_161-b12) (build 1.8.0_161-b12)
# Java VM: Java HotSpot(TM) Client VM (25.161-b12 mixed mode windows-x86 )
# Problematic frame:
# V [jvm.dll+0xe7b50]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# E:\git\eclipse\hs_err_pid10000.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#


public Map insert()
{
Map<String, Object> retMap = MapHelperUtil.hashMap();
Map<String, Object> resp = MapHelperUtil.hashMap();;

Map<String,Object> reqMap = getRequestData();

List<Map<String, Object>> rows = accidentAnalysisService.getAccidentAnalysisList(reqMap);
for (Map<String, Object> map : rows)
{
SGDin sgdin = new SGDin();
SGDout sgdout = GD.getSGDout(sgdin); //调用dll
}

retMap.put(MsgCode.RESULT_CDDE, MsgCode.SUCCESS);
retMap.put("version", "1.0");
resp.put("resp", rows);
return resp;
}


作为参数的SGDin类中各个属性值都不为null

public class GD
{
public static native SGDout getSGDout(SGDin sgdin);

static
{
System.load(Constants.getDllPath()+"GD.dll");
}
}


...全文
550 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongdejun 2018-03-07
  • 打赏
  • 举报
回复
引用 5 楼 lazy0327 的回复:
[quote=引用 4 楼 xiongdejun 的回复:] 这个跟tomcat没有关系。我如果没记错的话,jni只能在32位下运行。也就是说你的eclipse和jdk都必须是32位的
eclipse也尝试改为32位的了,然而tomcat还是会直接停止[/quote] jni我不怎么熟悉。如果你真想调用dll的话。你可以私信我,用jna吧。
「已注销」 2018-03-07
  • 打赏
  • 举报
回复
引用 4 楼 xiongdejun 的回复:
这个跟tomcat没有关系。我如果没记错的话,jni只能在32位下运行。也就是说你的eclipse和jdk都必须是32位的
eclipse也尝试改为32位的了,然而tomcat还是会直接停止
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
这个跟tomcat没有关系。我如果没记错的话,jni只能在32位下运行。也就是说你的eclipse和jdk都必须是32位的
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
引用 2 楼 lazy0327 的回复:
[quote=引用 1 楼 xiongdejun 的回复:] 运行环境问题
额 能不能具体一点?我出了什么问题? 因为dll文件应该是32位的,前面出现一个64位jdk无法调用32位dll的问题, 把项目运行修改为 本地eclipse 开发环境,jdk版本32位的1.8,tomcat也是32位的 [/quote] eclipse多少位的?
「已注销」 2018-03-06
  • 打赏
  • 举报
回复
引用 1 楼 xiongdejun 的回复:
运行环境问题
额 能不能具体一点?我出了什么问题? 因为dll文件应该是32位的,前面出现一个64位jdk无法调用32位dll的问题, 把项目运行修改为 本地eclipse 开发环境,jdk版本32位的1.8,tomcat也是32位的
xiongdejun 2018-03-06
  • 打赏
  • 举报
回复
运行环境问题

50,597

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧