0

Please could you tell me why I get an error?

debug:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Uncompilable code - cannot find symbol
  symbol:   class User
  location: class insertmulti.InsertMulti
    at insertmulti.InsertMulti.<clinit>(InsertMulti.java:1)
C:\Users\alex\AppData\Local\NetBeans\Cache\15\executor-snippets\debug.xml:150: The following error occurred while executing this line:
C:\Users\alex\AppData\Local\NetBeans\Cache\15\executor-snippets\debug.xml:129: The following error occurred while executing this line:
C:\Users\alex\AppData\Local\NetBeans\Cache\15\executor-snippets\debug.xml:77: Java returned: 1
BUILD FAILED (total time: 19 seconds)

The lists are something complicated for me but as far as I can see it is declared, initialized and has the libraries, this is the code.

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
 */
package insertmulti;

/**
 *
 * @author pruebas
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

public class InsertMulti {

    private final String url = "jdbc:postgresql://localhost/mydb";
    private final String user = "myusr";
    private final String password = "password";

    private static final String INSERT_USERS_SQL = "INSERT INTO users" +
        "  (id, name, email, country, password) VALUES " +
        " (?, ?, ?, ?, ?);";

    /**
     * insert multiple users
     */
    public void insertUsers(List < User > list) {
        try (
            Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement statement = conn.prepareStatement(INSERT_USERS_SQL);) {
            int count = 0;

            for (User user: list) {
                statement.setInt(1, user.getId());
                statement.setString(2, user.getName());
                statement.setString(3, user.getEmail());
                statement.setString(4, user.getCountry());
                statement.setString(5, user.getPassword());

                statement.addBatch();
                count++;
                // execute every 100 rows or less
                if (count % 100 == 0 || count == list.size()) {
                    statement.executeBatch();
                }
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public static void main(String[] args) {
        InsertMulti example = new InsertMulti();
        example.insertUsers(Arrays.asList(new User(2, "Ramesh", "ramesh@gmail.com", "India", "password123"),
            new User(3, "John", "john@gmail.com", "US", "password123")));
    }
    
}

The example is from this page:

I am using Windows 10 64-bits, Java 19, PostgreSQL 14, Apache NetBeans 15.

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
ACM1982
  • 1
  • 1

1 Answers1

0

You're missing an import for class User so java cannot find it during compilation.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Arrays;
    import java.util.List;
    // Missing import for class User

That's why you get:

  Caused by: java.lang.RuntimeException: Uncompilable code - cannot find symbol
  symbol:   class User
  location: class insertmulti.InsertMulti
JRF
  • 46
  • 3