首页新闻招聘找找看知识库

Java 用Jna 调用 dll ,idea中能够调用dll,用eclipse运行相同的代码,dll时,调用不起来?

0
悬赏园豆:100 [已解决问题]

环境:windows 64   jdk64   dll 32位

在jdk 64 位,windows 64下,dll是32位环境下;

我用idea运行自己写的demo,调用dll,能够正常运行调用;

 

在eclipse下运行相同的代码,调用dll,调用失败报错

java.lang.Error: Invalid memory access ;

但是在eclipse下用main函数运行时,是可以调用dll的

idea 和 eclipse所用的tomcat是同一个,jre也是同一个;

 

我搞不清楚,为什么在idea中能够运行,为什么到了eclispe中就会有问题?

求大神解惑~

万分感谢~

clo33tt的主页 clo33tt | 初学一级 | 园豆:13
提问于:2017-07-17 19:17

问题补充:

@RequestMapping("/login.shtml")
@ResponseBody
public Boolean login(HttpServletRequest request) throws InterruptedException {
Boolean a = false;
try {

System.out.println("开始测试");

System.out.println("初始化"+getSDK.Function.INSTANCE.MDKDLL_Init(f));
short port = 9000;
String ip = request.getParameter("ip");
String user = request.getParameter("user");
String password = request.getParameter("password");

//这里调用
int b = getSDK.Function.INSTANCE.MDKDLL_Connect(ip,port,user,password);
Thread.sleep(5000);
System.out.println("登录================================================"+b);
if (b == 0) {
a = true;
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("测试出错=================================================");

}
System.out.println("测试代码================================================="+a);
return a;

}

 

=================================================

 

public class getSDK {

public static String szDeviceId_test;
public static int nChannel_test;
public static int nAlarmType_test;
public static String szValueName_test;
public static String szValueUnit_test;
public static int nValueType_test;
public static int nValue_test;
public static float fValue_test;
public static String szValue_test;
public static String szReserve_test;


public interface Function extends Library {
Function INSTANCE = (Function) Native.loadLibrary("MDKDll", Function.class);
public int MDKDLL_Init(getSDK.MDKDLL_MessageCallback f);
public int MDKDLL_CleanUp();
public int MDKDLL_Connect(String ip, short port, String user, String password);
public int MDKDLL_Discon();
public int MDKDLL_QueryDevIotStatus(String deviceId, int type);

 

< >
分享
最佳答案
0

看下两个环境部署路径中, dll文件的位置是否一致,

是否idea和eclipse的部署配置不一致

收获园豆:100
苍枫露雨 | 小虾三级 |园豆:892 | 2017-07-18 16:40

我dll直接是放在jre里面的,在eclipse或者idea中用指定的jre 

clo33tt | 园豆:13 (初学一级) | 2017-07-18 16:43

@clo33tt: 

贴加载dll的代码看下

苍枫露雨 | 园豆:892 (小虾三级) | 2017-07-18 16:53

@苍枫露雨: ok 

clo33tt | 园豆:13 (初学一级) | 2017-07-18 16:53

@clo33tt: 

你有多个jre吗?

看下,idea和eclipse中配置tomcat时,为tomcat指定的jre是一样的吗?

苍枫露雨 | 园豆:892 (小虾三级) | 2017-07-18 17:15

@苍枫露雨: 这个我确认过很多次了,我指定的是同一个jre

clo33tt | 园豆:13 (初学一级) | 2017-07-18 17:16

@苍枫露雨: 这个我确认过很多次了,我指定的是同一个jre

clo33tt | 园豆:13 (初学一级) | 2017-07-18 17:16

@clo33tt: 

是用的同一个tomcat吗?

苍枫露雨 | 园豆:892 (小虾三级) | 2017-07-18 17:28

@苍枫露雨: 恩,我都是尽量的让环境一致,现在就是开发工具不同,把项目部署在tomcat下也能调用的

clo33tt | 园豆:13 (初学一级) | 2017-07-18 17:30

@clo33tt: 

那就诡异了,你把eclipse中 eclipse的jre和eclipse配置的tomcat的jre都指定为你放dll的jre试一试,

苍枫露雨 | 园豆:892 (小虾三级) | 2017-07-18 17:35
   您需要登录以后才能回答,未注册用户请先注册