首页 > 解决方案 > 为什么会发生这种情况,我该如何纠正这个“错误”?

问题描述

在此处输入图像描述

而且,当我尝试以相同的代码开始时,手机上的应用程序停止响应我认为错误将出现在连接的某些代码中,但我不确定,因为我在这个问题上很菜鸟

还有一个问题,我的连接正确吗?

public class ConexaoClass {

String classs = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/bd_tela";
String un = "admin";
String pass = "96960409w";


@SuppressLint("NewApi")
public Connection CONN(){
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    Connection conn = null;
    String connURL = null;
    try{
        Class.forName(classs);

        conn = DriverManager.getConnection(url, un, pass);

        conn = DriverManager.getConnection(connURL);

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return conn;
}

标签: java

解决方案


简化您的代码:

class Login {}  // Can't see this, but I know it's around somewhere. Maybe imported.

void someMethod() {
  Login login = new Login();
  login.execute();

  class Login { 
    void execute() {}
  }
}

Loginwithexecute()方法是一个本地,在你使用它的地方声明。本地类仅在声明后才在范围内。语言规范

由块(第 14.2 节)直接包围的局部类声明的范围是直接封闭块的其余部分,包括它自己的类声明。

所以你Login实际上是指在方法之外定义的类,它没有execute()方法,这意味着execute()找不到符号。

将本地声明移到之前:

class Login() {}

void someMethod() {
  class Login { 
    void execute() {}
  }

  Login login = new Login();
  login.execute();
}

但实际上,本地类并没有被广泛使用,并且有一个隐藏另一个类的本地类是令人困惑的。

考虑重命名它。


推荐阅读