精华内容
下载资源
问答
  • org.apache.jasper.JasperException: 在 [27] 行处理 [/pages/admin/member/member_add_do.jsp] 时发生异常 24: member.setNote(request.getParameter("note")); 25: member.setBirthday...
  • 请问线程中出现空指针异常怎么处理? 有人说:如果新线程使用的外部对象在老线程中被释放,而新线程继续使用是就会出现空指针异常 请求大神帮忙,还是不知道问题在哪,下面贴出部分代码;传入的值肯定不为空,是...
  • /** * 查询所有的记录数 * @param hql 查询条件 * @return 总记录数 ...这句话存在空指针异常 hql:hql = "from Article where users.id=" + userId; userId是从action中传进来的。 请问这个问题在哪里?
  • [空指针异常](https://img-ask.csdn.net/upload/201601/08/1452257136_806388.jpg) refreshableview.setOnRefreshListener(new PullToRefreshListener(){ @Override public void onRefresh() { // TODO ...
  • Integer aa=(Integer)session.getAttribute("id");Integer rest=(Integer)session.getAttribute("rest");int tempid=aa.intValue();int flag=0;Connection conn=null;PreparedStatement pstat=null;...

    Integer aa=(Integer)session.getAttribute("id");

    Integer rest=(Integer)session.getAttribute("rest");

    int tempid=aa.intValue();

    int flag=0;

    Connection conn=null;

    PreparedStatement pstat=null;

    DBConn db=new DBConn();

    try{

    String sql="update t_ticket set rest=? where id=?";

    conn=db.getConn();

    pstat=conn.prepareStatement(sql);

    pstat.setInt(1,rest-1);

    pstat.setInt(2,aa);

    flag=pstat.executeUpdate();

    if(flag!=0){

    response.sendRedirect("jpd.jsp");

    }else{

    response.sendRedirect("error.jsp");

    }

    }catch(SQLException e){

    System.out.println("数据库处理失败"+e.toString());

    }finally{

    if(pstat!=null) pstat.close();

    if(conn!=null) conn.close();

    }

    %>

    这段代码中String sql="update t_ticket set rest=? where id=?";

    conn=db.getConn();

    pstat=conn.prepareStatement(sql);

    pstat.setInt(1,rest-1);

    pstat.setInt(2,aa);

    flag=pstat.executeUpdate();

    是不是有问题u

    展开

    展开全文
  • import java.sql.*;... 看下数据库链接字符串,用户名,密码能否都正确 CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明空指针异常怎么解决,刚学java求指点!

    package com.db;

    import com.bean.CardBean;

    import java.sql.*;

    import java.util.ArrayList;

    import java.util.List;

    public class CardDB{

    private String dbDriver = “com.mysql.jdbc.Driver”;

    private String dbUrl = “jdbc:mysql://localhost:3306/telcard?characterEncoding=utf8″;

    private String dbUser =”root”;

    private String dbPass =”123456″;

    private Connection getDBConn(){

    Connection conn = null;

    try {

    Class.forName(dbDriver);

    conn = DriverManager.getConnection(dbUrl,dbUser,dbPass);

    } catch (Exception e) {

    e.printStackTrace();

    }

    return conn;

    }

    public int addOneCard(CardBean card) {

    int i = 0;

    String sql = “insert into card values(?,?,?,?)”;

    Connection conn = getDBConn();

    try {

    PreparedStatement preStmt = conn.prepareStatement(sql);

    preStmt.setString(1, card.getCardId());

    preStmt.setString(2, card.getCardType());

    preStmt.setString(3, card.getMoney());

    preStmt.setString(4, card.getCardArea());

    i = preStmt.executeUpdate();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return i;

    }

    public int deleteOneCard(String cardID) {

    int i = 0;

    String sql = “delete from card where CardID=””+cardID+”””;

    Connection cnn = getDBConn();

    try {

    Statement stmt = cnn.createStatement();

    i = stmt.executeUpdate(sql);

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return i;

    }

    public int updateOneCard(CardBean card) {

    int i = 0;

    String sql = “update card set CardType=?,Money=?,CardArea=? where CardID=””

    + card.getCardId()+”””;

    Connection cnn = getDBConn();

    try {

    PreparedStatement preStmt = cnn.prepareStatement(sql);

    preStmt.setString(1, card.getCardType());

    preStmt.setString(2, card.getMoney());

    preStmt.setString(3, card.getCardArea());

    i = preStmt.executeUpdate();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return i;

    }

    public List findCardById(String cardID) {

    List cards = new ArrayList();

    String sql = “select * from card where CardID like “%”+cardID+”%””;

    Connection cnn =getDBConn();

    try {

    Statement stmt = cnn.createStatement();

    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next()){

    CardBean card = new CardBean();

    card.setCardId(rs.getString(1));

    card.setCardType(rs.getString(2));

    card.setMoney(nullToString(rs.getString(3)));

    card.setCardArea(nullToString(rs.getString(4)));

    cards.add(card);

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return cards;

    }

    private String nullToString(Object obj ){

    if(null == obj){

    return “”;

    }

    return String.valueOf(obj);

    }

    }

    26323ba5d05048f72592cba5f0af4017.png

    解决方案

    40

    line83:Statement stmt = cnn.createStatement();报空指针异常,是cnn对象为null,

    conn = DriverManager.getConnection(dbUrl,dbUser,dbPass);

    看下数据库链接字符串,用户名,密码能否都正确

    CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明空指针异常怎么解决,刚学java求指点!

    展开全文
  • 方法的链式调用很容易引发空指针异常,但如果返回值都用 Optional 包装起来,就可以用 flatMap 方法来实现安全的链式调用了: String zipCode = getUser() .flatMap(User::getAddress) .flatMap(Address::...

    javax.annotation.Nonnull:由 JSR 305 提出,其参考实现为 com.google.code.findbugs.jsr305;

    org.eclipse.jdt.annotation.NonNull:Eclipse IDE 原生支持的空值检测注解;

    edu.umd.cs.findbugs.annotations.NonNull:SpotBugs 使用的注解,基于 findbugs.jsr305;

    org.springframework.lang.NonNull:Spring Framework 5.0 开始提供;

    org.checkerframework.checker.nullness.qual.NonNull:Checker Framework 使用;

    android.support.annotation.NonNull:集成在安卓开发工具中;

    我建议使用一种跨 IDE 的解决方案,如 SpotBugs 或 Checker Framework,它们都能和 Maven 结合得很好。

    SpotBugs 与 @NonNull、@CheckForNull

    SpotBugs 是 FindBugs 的后继者。通过在方法的参数和返回值上添加 @NonNull 和 @CheckForNull 注解,SpotBugs 可以帮助我们进行编译期的空值检测。需要注意的是,SpotBugs 不支持 @Nullable 注解,必须用 @CheckForNull 代替。如官方文档中所说,仅当需要覆盖 @ParametersAreNonnullByDefault 时才会用到 @Nullable。

    官方文档 中说明了如何将 SpotBugs 应用到 Maven 和 Eclipse 中去。我们还需要将 spotbugs-annotations 加入到项目依赖中,以便使用对应的注解。

    com.github.spotbugs

    spotbugs-annotations

    3.1.7

    以下是对不同使用场景的说明:

    @NonNull

    private Object returnNonNull() {

    // 错误:returnNonNull() 可能返回空值,但其已声明为 @Nonnull

    return null;

    }

    @CheckForNull

    private Object returnNullable() {

    return null;

    }

    public void testReturnNullable() {

    Object obj = returnNullable();

    // 错误:方法的返回值可能为空

    System.out.println(obj.toString());

    }

    private void argumentNonNull(@NonNull Object arg) {

    System.out.println(arg.toString());

    }

    public void testArgumentNonNull() {

    // 错误:不能将 null 传递给非空参数

    argumentNonNull(null);

    }

    public void testNullableArgument(@CheckForNull Object arg) {

    // 错误:参数可能为空

    System.out.println(arg.toString());

    }

    对于 Eclipse 用户,还可以使用 IDE 内置的空值检测工具,只需将默认的注解 org.eclipse.jdt.annotation.Nullable 替换为 SpotBugs 的注解即可:83f2ce61deef1836e006b61022ced747.png

    Checker Framework 与 @NonNull、@Nullable

    Checker Framework 能够作为 javac 编译器的插件运行,对代码中的数据类型进行检测,预防各类问题。我们可以参照 官方文档,将 Checker Framework 与 maven-compiler-plugin 结合,之后每次执行 mvn compile 时就会进行检查。Checker Framework 的空值检测程序支持几乎所有的注解,包括 JSR 305、Eclipse、甚至 lombok.NonNull。

    import org.checkerframework.checker.nullness.qual.Nullable;

    @Nullable

    private Object returnNullable() {

    return null;

    }

    public void testReturnNullable() {

    Object obj = returnNullable();

    // 错误:obj 可能为空

    System.out.println(obj.toString());

    }

    Checker Framework 默认会将 @NonNull 应用到所有的函数参数和返回值上,因此,即使不添加这个注解,以下程序也是无法编译通过的:

    private Object returnNonNull() {

    // 错误:方法声明为 @NonNull,但返回的是 null。

    return null;

    }

    private void argumentNonNull(Object arg) {

    System.out.println(arg.toString());

    }

    public void testArgumentNonNull() {

    // 错误:参数声明为 @NonNull,但传入的是 null。

    argumentNonNull(null);

    }

    Checker Framework 对使用 Spring Framework 5.0 以上的用户非常有用,因为 Spring 提供了内置的空值检测注解,且能够被 Checker Framework 支持。一方面我们无需再引入额外的 Jar 包,更重要的是 Spring Framework 代码本身就使用了这些注解,这样我们在调用它的 API 时就能有效地处理空值了。举例来说,StringUtils 类里可以传入空值的函数、以及会返回空值的函数都添加了 @Nullable 注解,而未添加的方法则继承了整个框架的 @NonNull 注解,因此,下列代码中的空指针异常就可以被 Checker Framework 检测到了:

    // 这是 spring-core 中定义的类和方法

    public abstract class StringUtils {

    // str 参数继承了全局的 @NonNull 注解

    public static String capitalize(String str) {}

    @Nullable

    public static String getFilename(@Nullable String path) {}

    }

    // 错误:参数声明为 @NonNull,但传入的是 null。

    StringUtils.capitalize(null);

    String filename = StringUtils.getFilename("/path/to/file");

    // 错误:filename 可能为空。

    System.out.println(filename.length());

    Optional 类型

    Java 8 引入了 Optional 类型,我们可以用它来对函数的返回值进行包装。这种方式的优点是可以明确定义该方法是有可能返回空值的,因此调用方必须做好相应处理,这样也就不会引发空指针异常。但是,也不可避免地需要编写更多代码,而且会产生很多垃圾对象,增加 GC 的压力,因此在使用时需要酌情考虑。

    Optional opt;

    // 创建

    opt = Optional.empty();

    opt = Optional.of("text");

    opt = Optional.ofNullable(null);

    // 判断并读取

    if (opt.isPresent()) {

    opt.get();

    }

    // 默认值

    opt.orElse("default");

    opt.orElseGet(() -> "default");

    opt.orElseThrow(() -> new NullPointerException());

    // 相关操作

    opt.ifPresent(value -> {

    System.out.println(value);

    });

    opt.filter(value -> value.length() > 5);

    opt.map(value -> value.trim());

    opt.flatMap(value -> {

    String trimmed = value.trim();

    return trimmed.isEmpty() ? Optional.empty() : Optional.of(trimmed);

    });

    方法的链式调用很容易引发空指针异常,但如果返回值都用 Optional 包装起来,就可以用 flatMap 方法来实现安全的链式调用了:

    String zipCode = getUser()

    .flatMap(User::getAddress)

    .flatMap(Address::getZipCode)

    .orElse("");

    Java 8 Stream API 同样使用了 Optional 作为返回类型:

    stringList.stream().findFirst().orElse("default");

    stringList.stream()

    .max(Comparator.naturalOrder())

    .ifPresent(System.out::println);

    此外,Java 8 还针对基础类型提供了单独的 Optional 类,如 OptionalInt、OptionalDouble 等,在性能要求比较高的场景下很适用。

    其它 JVM 语言中的空指针异常

    Scala 语言中的 Option 类可以对标 Java 8 的 Optional。它有两个子类型,Some 表示有值,None 表示空。

    val opt: Option[String] = Some("text")

    opt.getOrElse("default")

    除了使用 Option#isEmpty 判断,还可以使用 Scala 的模式匹配:

    opt match {

    case Some(text) => println(text)

    case None => println("default")

    Scala 的集合处理函数库非常强大,Option 则可直接作为集合进行操作,如 filer、map、以及列表解析(for-comprehension):

    opt.map(_.trim).filter(_.length > 0).map(_.toUpperCase).getOrElse("DEFAULT")

    val upper = for {

    text

    trimmed

    upper 0

    } yield upper

    upper.getOrElse("DEFAULT")

    Kotlin 使用了另一种方式,用户在定义变量时就需要明确区分 可空和不可空类型。当可空类型被使用时,就必须进行空值检测。

    var a: String = "text"

    a = null // 错误:无法将 null 赋值给非空 String 类型。

    val b: String? = "text"

    // 错误:操作可空类型时必须使用安全操作符(?.)或强制忽略(!!.)。

    println(b.length)

    val l: Int? = b?.length // 安全操作

    b!!.length // 强制忽略,可能引发空值异常

    Kotlin 的特性之一是与 Java 的可互操作性,但 Kotlin 编译器无法知晓 Java 类型是否为空,这就需要在 Java 代码中使用注解了,而 Kotlin 支持的 注解 也非常广泛。Spring Framework 5.0 起原生支持 Kotlin,其空值检测也是通过注解进行的,使得 Kotlin 可以安全地调用 Spring Framework 的所有 API。

    结论

    在以上这些方案中,我比较推荐使用注解来预防空指针异常,因为这种方式十分有效,对代码的侵入性也较小。所有的公共 API 都应该使用 @Nullable 和 @NonNull 进行注解,这样就能强制调用方对空指针异常进行预防,让我们的程序更为健壮。

    展开全文
  • Java空指针异常是我们在Java开发中经常遇到的问题,一般发生在Java后台获取前台页面的传值时,比如前端我们用一个Ajax来提交数据:$.ajax({ url:"http://www.xxx.com/addStudent", data:JSON.stringify(data), type:...

    e7b71548887cc37782b9bf9c6d7920e5.png

    Java空指针异常是我们在Java开发中经常遇到的问题,一般发生在Java后台获取前台页面的传值时,比如

    前端我们用一个Ajax来提交数据:

    $.ajax({
        url:"http://www.xxx.com/addStudent",
        data:JSON.stringify(data),
        type:"post",
        async:false,
        contentType:"application/json",
        dataType:"json",
        success:function(res){
           alert("ok,添加成功");
        }
    });
    

    后端Java方法:

    @RequestMapping("/addStudent")
    public String addStudent(@RequestBody Map map){//这里我们用一个map集合来接受前台的值
    map.get("name");//空指针通常就发生在这里
    }

    这个 多数是由于前台表单name字段写错导致获取不到值,导致传到后台的值为null

    所以出现这个问题找前台字段的问题就可以了.

    展开全文
  • Exception in thread "main" java.lang.NullPointerException ... ... 19行前后代码 public void check(String endPoint){ ... Airline p=air.indexOf(endPoint);... // 从顺序表中的首结点开始查找,直到listElem[j]...
  • 问题就是标题 我都编好了代码 就是最后那里出现问题了 [img=https://img-bbs.csdn.net/upload/202005/09/1589028281_476071.png][/img][img=https://img-bbs.csdn.net/upload/202005/09/1589028281_605538.png][/...
  • 一个activity里面有2个网络请求,但是其中一个网络请求的参数是根据另外一个网络请求获得的数据决定的,这两个网络请求要怎么写,我这么写出现了空指针异常,下面是代码 public void getPartNum() { final String...
  • Java空指针异常是我们在Java开发中经常遇到的问题,一般发生在Java后台获取前台页面的传值时,比如前端我们用一个Ajax来提交数据:$后端Java方法:@RequestMapping这个 多数是由于前台表单name字段写错导致获取不到值,...
  • /**Tochangethislicenseheader,chooseLicenseHeadersinProjectProperties.*Tochangethistemplatefile,chooseTools|Templates*andopenthetemplateintheeditor.*/packagepoidemo1;impor.../** To change this license ...
  • 就是不能用get方法读取到数据库里面的email值,要怎么解决 User db_user=(User)session.get(User.class, user.getEmail());//这句话不行 public boolean CheckLogin(User user) { Session session =null;...
  • package com.db; import com.bean.CardBean; import java.sql.*; import java.util.ArrayList; import java.util.List; public class CardDB{ private String dbDriver = "com.mysql.jdbc.Driver";...
  • [img=... File pathFile = new File(descDir); if(!pathFile.exists()){ ... for(Enumeration entries = (Enumeration) zip.getEntry(descDir);...最后那个是219行
  • 我想在Panding中的Pd()方法里调用FanZhi中的fanzhi()方法   <p><img alt="" height="833" src="https://img-ask.csdnimg.cn/upload/1618891682344.png" width="1004" /></p>   <p><img alt="" height="654" ... ...
  • java.lang.NullPointerException at ... ... @Override public String getDisplayName() { ... return labExam.getDisplayName() + " - " + labTestTime.getDisplayName();... }
  • 做登录和欢迎的jsp文件时,用了强制类型转换,导致uesr出现空值怎么解决。 ![图片说明](https://img-ask.csdn.net/upload/202003/23/1584928865_521579.png) ![图片说明]...
  • 查询该异常都没有找到,希望有前辈帮忙指点一二,拜托了 下面是我context.xml文件的配置,放在src目录下 <code class="language-XML"><?xml version="1.0" encoding=&...
  • 空指针异常

    2019-09-09 15:45:53
    空指针异常一般都是由于没有对创建的对象进行初始化,即指向的对象为空(null),当操作这个对象时,就会报空指针异常。当操作一个对象不存在的方法时,也会报空指针异常解决办法:根据报错信息,检查设置的对象...
  • [b]java.lang.NullPointerException ... at android.view.View.measure(View.java:12723) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) at android.widget.LinearLayout....
  • ``` ... import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; ...我知道错误的意思,也知道发生在哪儿,就是不知道怎么解决
  • main函数中出现空指针异常,如何解决?编译通过,但运行时出现空指针异常,可是找不到哪里出现了空指针。代码如下:import java.awt.*;import javax.swing.*;public class MyDrawPanel extends JPanel{public void ...
  • 背景:在制作一个即时聊天的APP中,聊天界面聊天消息的显示我使用了ListView,并且使用了自定义的Adapter,获取到聊天记录之后ListView可以正常显示,但是一旦滑动就会报空指针异常。我查看了很多博客,都没有提到与...
  • 异常信息:严重: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at org.apache.jsp.check_jsp._jspService(check_jsp.java:72) at org.apache.jasper.runtime....
  • 2 楼胡德品2011-07-25jieshuo 写道楼主怎么解决的啊?我也碰到同样的问题哦public static void main(String args[]) throws FileNotFoundException,IOException {String file = "d:\\user.xls";List list = import...
  • SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(context);... //这句给我报空指针异常 ages = Integer.getInteger(age); } 怎么解决!? 
  • if (list.get(i).getPassword().equals(null)) {//报空指针异常 //list.get(i).getPassword()==null;这样也不行 User user= new User(); user= list.get(i); user.setPassword(s); } }

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 159
精华内容 63
关键字:

空指针异常怎么解决