java.lang.ClassNotFoundException: net.sf.json.JSONObject

时间:2022-07-01 19:41:13
昨天学习json,遇到一个很奇怪的问题:
   1.我已经在工程的lib目录下添加了json-lib-2.1-jdk15.jar
   2. 同一工程下的PeopleBean.java类可以正确运行:


import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer;

public class PeopleBean {

private String name;

private int age;

private boolean gendar;

//setter/getter
public PeopleBean() {
}

public PeopleBean(String name, int age, boolean gendar) {
this.name = name;
this.age = age;
this.gendar = gendar;
}


public static void main(String[] args) throws Exception{

/**
 * 创建JSONObject对象
 */
//Create a JSONObject from scratch
JSONObject object1=new JSONObject();
object1.element("name", "张三");
object1.element("age", 24);
object1.element("gendar", true);


//Create a JSONObject from formatted String
String jsonString1="{name:\"李四\",age:25,gendar:false}";
JSONObject object2=JSONObject.fromObject(jsonString1);


String jsonString2="{'name':'王五','age':22,'gendar':true}";
JSONObject object3=(JSONObject)JSONSerializer.toJSON(jsonString2);

//Create a JSONObject from a Map
Map map=new HashMap();
map.put("name", "刘六");
map.put("age", 23);
map.put("gendar", true);
JSONObject object4=(JSONObject)JSONSerializer.toJSON(map);

//Create a JSONObject from a bean
PeopleBean WangNan=new PeopleBean("王l",26,true);
JSONObject object5=(JSONObject)JSONSerializer.toJSON(WangNan);

/**
 * 把JSONObject对象转化为Bean或Object
 */
PeopleBean people=(PeopleBean)object5.toBean(object5, PeopleBean.class);
System.out.println("name===="+people.getName()+" age======"+people.getAge()+"  gendar======"+people.isGendar());

/**
 * From JSON to XML
 */

JSONObject object6=new JSONObject(true);
XMLSerializer xmlSerializer=new XMLSerializer();
String xml1=xmlSerializer.write(object6);
System.out.println(xml1);

xmlSerializer.setRootName("people");
xmlSerializer.setTypeHintsEnabled(false);
String xml2=xmlSerializer.write(object5);
System.out.println(xml2);

/**
 * From XML to JSON
 */
JSONObject object7=(JSONObject)xmlSerializer.read(xml2);
System.out.println(object7);
}

}


    3. 同一工程下的UserController.java在tomcat启动后,报错java.lang.ClassNotFoundException: net.sf.json.JSONObject:

import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import com.wn.core.usersys.model.User;
import com.wn.core.usersys.service.UserService;

public class UserController extends MultiActionController {




@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,HttpServletResponse response) throws Exception {

String loginName=request.getParameter("loginName");
String passwd=request.getParameter("passwd");
System.out.println("loginName============"+loginName);
System.out.println("passwd==============="+passwd);

Map map=new HashMap();
map.put("name", "刘六");
map.put("age", 23);
map.put("gendar", true);
                //此处报错
JSONObject object4=(JSONObject)JSONSerializer.toJSON(map);

return new ModelAndView("success","json",object4);

}

}

请问是什么原因?

18 个解决方案

#1


Tomcat環境沒有 json-lib-2.1-jdk15.jar
可以放到tomcat的common lib 或是web ap的WEB-INF\lib

#2


.jar包冲突了吧

#3


这个错误很明显的呀,就是没有这个包呗。你右键下你的项目看下bulid-path ->configure bulid path  中的libraries 下面的包是否有错误,看有没有你的那个包了。

#4


1#,3#,请看帖..我已经加到工程下了,并且同一个工程下的别的类是可以正确运行的

#5


顶你!我这里报
WARN http-8088-2 net.sf.json.JSONObject - java.lang.NoSuchMethodException: Property 'servlet' has no getter method
跟你的差不多
工程下有jar包 期待解决啊

#6


我也碰到了,重新建个同名的project,把原来的src,web丢进去,原来的删除掉,好了

#7


使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时,如果会出现异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher

是因为需要的类没有找到,一般,是因为少导入了JAR包,

使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖 包:commons-beanutils.jar,commons-httpclient.jar,commons- lang.jar,ezmorph.jar,morph-1.0.1.jar

这几个包也是需要导入的.如果缺少里面的:ezmorph.jar包,则即出现上述异常

commons系列的包,可在网站:http://www.docjar.com/上面搜索下载,其它包可下载网站如下:

http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/

#8


我想知道楼主这个问题解决了吗   我也碰到同样的问题

#9


 求真相

#10


json用到的lib包大致有一下几个: 
    commons-logging-1.0.4.jar 
    commons-lang-2.3.jar 
    commons-collections-3.2.jar 
    commons-beanutils-1.7.0.jar 
  另外还需要两个单独一点的包 
    json-lib-2.2.1-jdk15.jar和ezmorph-1.0.4.jar 

#11


什么原因?

#12


我也遇到了该问题。。。

#13


引用 10 楼  的回复:
json用到的lib包大致有一下几个: 
    commons-logging-1.0.4.jar 
    commons-lang-2.3.jar 
    commons-collections-3.2.jar 
    commons-beanutils-1.7.0.jar 
  另外还需要两个单独一点的包 
    json-lib-2.2.1-jdk15.jar和ezm……


这些包都有了还有这个异常?

#14


我也遇到了这个问题,但是现在解决 了,解决办法是在你的tomcat环境中的lib包下也加入和你eclipse中一样的包就可以了。问题的原因就是 tomcat中缺少这个包。

#15


也遇到了和楼主相同的问题 导入JAR包时,在lib下新建文件夹json,然后把所有需要的JAR复制进去 最后我把文件夹json删掉,直接将JAR包复制到lib下就可以了

#16


我也是遇到了

#17


servlet部分代码

List<userInfo> list=new ArrayList<userInfo>();
userInfo u1=new userInfo();
u1.setUserId(1);
u1.setUserName("张三");
userInfo u2=new userInfo();
u1.setUserId(2);
u1.setUserName("李四");
list.add(u1);
list.add(u2);
JSONArray j=JSONArray.fromObject(list);
out.print(j);

#18


jquery代码

$(function(){
    
    $("#select").bind("click",function(){
             $.ajax({
              
              type:"POST",
              url:"userServlet",
              cache:false,
              data:name="zah",
              dataType:"json",
              success:function(json){
               alert(json[0].userName);
              }
             
             })
    })
  
  })
    

#1


Tomcat環境沒有 json-lib-2.1-jdk15.jar
可以放到tomcat的common lib 或是web ap的WEB-INF\lib

#2


.jar包冲突了吧

#3


这个错误很明显的呀,就是没有这个包呗。你右键下你的项目看下bulid-path ->configure bulid path  中的libraries 下面的包是否有错误,看有没有你的那个包了。

#4


1#,3#,请看帖..我已经加到工程下了,并且同一个工程下的别的类是可以正确运行的

#5


顶你!我这里报
WARN http-8088-2 net.sf.json.JSONObject - java.lang.NoSuchMethodException: Property 'servlet' has no getter method
跟你的差不多
工程下有jar包 期待解决啊

#6


我也碰到了,重新建个同名的project,把原来的src,web丢进去,原来的删除掉,好了

#7


使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时,如果会出现异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher

是因为需要的类没有找到,一般,是因为少导入了JAR包,

使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖 包:commons-beanutils.jar,commons-httpclient.jar,commons- lang.jar,ezmorph.jar,morph-1.0.1.jar

这几个包也是需要导入的.如果缺少里面的:ezmorph.jar包,则即出现上述异常

commons系列的包,可在网站:http://www.docjar.com/上面搜索下载,其它包可下载网站如下:

http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/

#8


我想知道楼主这个问题解决了吗   我也碰到同样的问题

#9


 求真相

#10


json用到的lib包大致有一下几个: 
    commons-logging-1.0.4.jar 
    commons-lang-2.3.jar 
    commons-collections-3.2.jar 
    commons-beanutils-1.7.0.jar 
  另外还需要两个单独一点的包 
    json-lib-2.2.1-jdk15.jar和ezmorph-1.0.4.jar 

#11


什么原因?

#12


我也遇到了该问题。。。

#13


引用 10 楼  的回复:
json用到的lib包大致有一下几个: 
    commons-logging-1.0.4.jar 
    commons-lang-2.3.jar 
    commons-collections-3.2.jar 
    commons-beanutils-1.7.0.jar 
  另外还需要两个单独一点的包 
    json-lib-2.2.1-jdk15.jar和ezm……


这些包都有了还有这个异常?

#14


我也遇到了这个问题,但是现在解决 了,解决办法是在你的tomcat环境中的lib包下也加入和你eclipse中一样的包就可以了。问题的原因就是 tomcat中缺少这个包。

#15


也遇到了和楼主相同的问题 导入JAR包时,在lib下新建文件夹json,然后把所有需要的JAR复制进去 最后我把文件夹json删掉,直接将JAR包复制到lib下就可以了

#16


我也是遇到了

#17


servlet部分代码

List<userInfo> list=new ArrayList<userInfo>();
userInfo u1=new userInfo();
u1.setUserId(1);
u1.setUserName("张三");
userInfo u2=new userInfo();
u1.setUserId(2);
u1.setUserName("李四");
list.add(u1);
list.add(u2);
JSONArray j=JSONArray.fromObject(list);
out.print(j);

#18


jquery代码

$(function(){
    
    $("#select").bind("click",function(){
             $.ajax({
              
              type:"POST",
              url:"userServlet",
              cache:false,
              data:name="zah",
              dataType:"json",
              success:function(json){
               alert(json[0].userName);
              }
             
             })
    })
  
  })