环境: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中就会有问题?
求大神解惑~
万分感谢~
@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);
看下两个环境部署路径中, dll文件的位置是否一致,
是否idea和eclipse的部署配置不一致
我dll直接是放在jre里面的,在eclipse或者idea中用指定的jre
@clo33tt:
贴加载dll的代码看下
@苍枫露雨: ok
@clo33tt:
你有多个jre吗?
看下,idea和eclipse中配置tomcat时,为tomcat指定的jre是一样的吗?
@苍枫露雨: 这个我确认过很多次了,我指定的是同一个jre
@苍枫露雨: 这个我确认过很多次了,我指定的是同一个jre
@clo33tt:
是用的同一个tomcat吗?
@苍枫露雨: 恩,我都是尽量的让环境一致,现在就是开发工具不同,把项目部署在tomcat下也能调用的
@clo33tt:
那就诡异了,你把eclipse中 eclipse的jre和eclipse配置的tomcat的jre都指定为你放dll的jre试一试,