import java.util.ArrayList;
import java.util.List;
import java.sql.*;
import net.sf.json.*;public class JsonService { public JsonService() {
// TODO Auto-generated constructor stub
} public String createJsonString(String key, Object object) {
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, object);
return jsonObject.toString();
}

public String createGsonString(Object object) {
String jsonString  = JSONSerializer.toJSON(object).toString();
return jsonString;
} public List<Person> getPersons() {
List<Person> list = new ArrayList<Person>();
String sql = "select * from users";
ResultSet rs= SQLQuery.getRs(sql);
while(rs.next()){
Person p = new Person();
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
p.setPassword(rs.getString("password"));
p.setAge(rs.getInt("age"));
p.setSalary(rs.getString("salary"));
list.add(p);
}
return list;
}
编译的时候提示  JsonService.java:5: 错误: 程序包net.sf.json不存在
import net.sf.json.JSONObject;
                  ^
JsonService.java:16: 错误: 找不到符号
JSONObject jsonObject = new JSONObject();
^
  符号:   类 JSONObject
  位置: 类 JsonService
JsonService.java:16: 错误: 找不到符号
JSONObject jsonObject = new JSONObject();
                            ^
  符号:   类 JSONObject
  位置: 类 JsonService
JsonService.java:22: 错误: 找不到符号
String jsonString  = JSONSerializer.toJSON(object).toString();
                     ^
  符号:   变量 JSONSerializer
  位置: 类 JsonService
 注:  我已经把JSON所用的包都放到了项目的lib目录下了

解决方案 »

  1.   

    放到lib下是为了运行时访问,是tomcat把这些lib目录加载到他的运行期classpath编译器不会去问tomcat用到的包在哪,需要在编译的时候自己加,另外,你手动javac编译?如果ide的话,你写的时候就会告诉你找不到,方便些
      

  2.   

    输入的时候就是  javac -d . *.java  就这样输入的啊,    手动编译的。~~~~~   我换了一个JSON的JAR文件,用的是fastjson这个也不错,用的很快~  问一下,如果在工程的WEB-INF下建立了lib文件夹,把所用的jar文件放这里,那么还一定要配置环境变量么,为什么我不配置还是识别不出来~
      

  3.   

    输入的命令就是   javac -d . *.java   手动编译的   ,  我换包了,那个包怎么弄也识别不出来,换了一个 fastjson.jar包,这个可以用,   弱弱的问一下,我在工程目录的WEB-INF下的lib包里放所用的jar文件,那么我用的时候还必须配置classpath么,我为什么不配置就用不了呢
      

  4.   

    你用的什么ide啊
    可能需要修改文件吧
      

  5.   


    你说的配置classpath的意思是把你用的包放到系统环境变量classpath里?一般环境变量里的classpath中只加入java最基础的包,像你的情况只是在一个项目中用到某些包,最好是在编译时加入classpath option,参见javac的doc,
    把你的第三方包放到WEB-INF下的lib,这是为了方便tomcat类服务器用,也就是服务器在运行时会去把这些lib目录加到他的classpath中,但javac和服务器毫无关系,他不会去寻找服务器(一个特定java程序)运行期的classpath,他只是傻瓜的引入系统中设置的及你命令行给的classpath要知道WEB-INF下的lib目录,除了你的服务器对别的程序没有任何特殊意义,只是一个普通的文件夹