idea编译打包结果和eclipse编译打包结果不同

去开原 发布于 2013/08/08 08:28
阅读 1K+
收藏 1

同样的代码,在idea里跑的时候就会出错,在eclipse里面就没有问题,通过idea发布的也有问题,而通过eclipse发布的就没有,请问这个怎么解决?

代码如下,在idea中,第18行会报错,java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean Cannot be cast to Request。但是在eclipse中就可以

public static JsonClient jsonToClient(String clientJsonString) throws Exception{
		JsonClient jsonClient  = new JsonClient();
		//实际返回client对象
		Client client = new Client() ;
		List<Request> requestList = new ArrayList<Request>();
		
		JSONObject clientJsonObject = JSONObject.fromObject(clientJsonString.replaceAll("\\t", ""));
		jsonClient = (JsonClient)JSONObject.toBean(clientJsonObject, JsonClient.class);
        //解析client
		Client tempClient = (Client)JSONObject.toBean(JSONObject.fromObject(jsonClient.getClient()), Client.class);
		
		BeanUtils.copyProperties(tempClient, client, new String[]{"requests"});
		//为防止下面代码出现错误,先将client组织到JSONClient中
		jsonClient.setClient(client);
		//获取request的list			
		List<Request> tempRequestList = tempClient.getRequests();
		//解析request
		for (Object requestObject : tempRequestList) {
			Request clientRequest = new Request();
			Request tempRequest = (Request) JSONObject.toBean(JSONObject
					.fromObject(requestObject), Request.class);
			String command = tempRequest.getCommand();
			//判断是否存在这个command
			if(AppServerCommon.COMMAND_INPUTDATA.containsKey(command)){
				Class<?> command_inputdata = AppServerCommon.COMMAND_INPUTDATA.get(command);
				
				Object inputData  = JSONObject.toBean(JSONObject.fromObject(tempRequest.getInputData()),command_inputdata);
				
				//组织RequestList
				BeanUtils.copyProperties(tempRequest, clientRequest, new String[]{"inputData"});
				clientRequest.setInputData(inputData);
				requestList.add(clientRequest);
			}else{
				logger.error("不支持command:" + command);
				clientRequest.setCommand(command);
				requestList.add(clientRequest);
			}
		}
加载中
0
震秦
震秦

同问.

在用JActor时, 也出现过这样的问题. Eclipse能编译, Idea却报错. 而且程序还能正确运行的.

0
lxbzmy
lxbzmy

eclipse有自己的编译器。所以有些静态信息在编译过程中保留下来了。比方说方法中的变量名。

不信你用ant javac编译你的程序一定还会出错。

你这个是GWT的项目?,也许是少了一些编译环节了吧?

去开原
去开原
ant编译不报错
0
南湖船老大
南湖船老大

eclipse使用的自己的编译器 ecj 编译的

IDEA是用的javac 编译的。

某些情况下可能存在问题,ecj 编译的代码兼容性好,javac编译要严格点


0
RishonL
RishonL

首先,这个和编译器神马的没有太大关系 .

其次, 主要的原因是IDEA 用的是 MAVEN 编译, 

出现这个问题应该是你POM.XML文件中的引用没有配置正确.

主要可能是此类的项目没有在文件中声明或者是在多个项目中存在冲突

又或者是这个缺少的类对应的JAR包版本不对.

解决方法就是仔细检查POM.XML文件中的项目内容.

去开原
去开原
我怎么没找着pom.xml文件?..
0
antipro
antipro
检查一下JDK的版本。
返回顶部
顶部