个人博客中的相关问题(一)

最近在做一个个人博客,准备放到Google Application Engine上去,本来是想找一个现成的Java版本的博客,找了很久找到了两个源代码,感觉不太合我的心意,于是准备自己做一个玩玩.本博客系统采用的是Struts2.1 + JSTL + Fckeditor + JDO.本博客还在制作中,将过程中的一些方法及经验总结如下:

一.关于异常

1.java.lang.InstantiationException 

实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。 

2. gae报错信息:

javax.swing.tree.TreeNode is a restricted class. Please see the Google App Engine developer's guide for more details.

问题原因:

freemarker使用到了gae不允许的class

解决办法:

工程内新建freemarker.core.TextBlock覆盖freemarker

3.java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String 

今天使用request.getParameterMap()获得Map中的数据时,使用

	Map map=request.getParameterMap();
	if(map.contains(key)){
	         String value=(String) map.get(key);
                 }

 

 

 

[Ljava.lang.String; cannot be cast to java.lang.String错误,上网查了才知道get(key)返回的是String[],所以要使用字符串数组才行。

4.诡异的异常

org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed

 

Are you using Google App Engine for java and JDO?

If you ask for a list of something you might have to call the method size(). (studip i know)

The code below would throw org.datanucleus.exceptions.NucleusUserException: "Object Manager has been closed" if we removed the call to size()

	public List<Customer>getAllCustomers()
	{
	    List<Customer> customers = new ArrayList();
	    PersistenceManager pm = pmfInstance.getPersistenceManager();
	    String query = "select from " + Customer.class.getName();
	    customers = (List<Customer> pm.newQuery(query).execute();
	    customers.size(); 
	    pm.close();
	    return customers;
	}

 

5.com.google.appengine.api.datastore.TexttoString()getValue()方法的区别:

getValue()得到的是Text中存储的完整的.符数据,而toString()获得的是该字符的部分内容摘要,格式为<:Text字符数据...>,总长度不超过74个字符.起初我以为两者应该都能返回内部的字符串,因此随便用了一下toString(),结果数据一长就无法得到全部的数据,才发现使用的方法不对.

 

 

 

 

 

 

你可能感兴趣的:(java,freemarker,Google,wordpress,GAE)