我有ubuntu 20.04.6。 Openjdk 11. mysql-connector-java-8.0.20.jar,重命名为 mysql.jar CLASSPATH="/var/www/html/java/mysql.jar",classpath 在 ~/.bashrc 安装 openjdk 11 并设置后类路径,仍然无法从 Linux 终端执行我的应用程序。我给你源代码:
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class mysql {
public static void main(String args[]) {
Connection conexion=null;
Statement instruccion=null;
ResultSet conjuntoresultados=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conexion=DriverManager.getConnection("jdbc:mysql://localhost:3306/galpon","root","password");
instruccion=conexion.createStatement();
conjuntoresultados=instruccion.executeQuery("select usuario,cbu from duenos");
ResultSetMetaData metadatos=conjuntoresultados.getMetaData();
int numerocolumnas=metadatos.getColumnCount();
System.out.printf("Dueños de vehículos:");
for(int i=0;i<numerocolumnas;i++)
System.out.printf("%-8s\t",metadatos.getColumnName(i));
System.out.println();
while(conjuntoresultados.next()){
for(int i=0;i<numerocolumnas;i++)
System.out.printf("%-8s\t",conjuntoresultados.getObject(i));
System.out.println();
}
}
catch (SQLException sqlexcepcion) {
sqlexcepcion.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally
{
try
{
conjuntoresultados.close();
instruccion.close();
conexion.close();
}
catch ( Exception excepcion )
{
excepcion.printStackTrace();
}
}
}
}
错误信息为: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal .loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527) 在 java.base/java.lang.Class.forName0(本机方法)在java.base / java.lang.Class.forName(Class.java:315)在mysql.main(mysql.java:13)java.lang.NullPointerException在mysql.main(mysql.java:39)
感谢您给我的每一个帮助
我尝试通过从 mysql 下载中下载的 deb 安装程序来安装 mysql 连接器。没有工作。然后下载mysql连接器java 8.0.20.jar,重命名为位于/var/www/html/java中的mysql.jar,然后在~/.bashrc中设置CLASSPATH=/var/www/html/java/mysql.jar,然后通过“source ~/.bashrc”重新加载 bashrc。 这些对我来说都不起作用。我不知道为什么
属性来确定运行时有效的classpath。
String classpath = System.getProperty( "java.class.path" );
包含 MySQL JDBC 驱动程序的类路径摘录,在我的 IDE (IntelliJ) 中运行。
…/com/mysql/mysql-connector-j/9.0.0/mysql-connector-j-9.0.0.jar:…
使用 Apache Maven 或 Gradle 等构建管理工具,Java 工作变得更容易
。如果使用 Maven,请使用 Maven 原型创建一个新项目,如 快速入门
。新项目包含一个 POM 文件供您编辑。将 JDBC 驱动程序指定为 依赖项
。 <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.0.0</version>
</dependency>
看起来您的 JDBC 来自过时的教程。以下是一些改进。
Class.forName("com.mysql.cj.jdbc.Driver");
很多年来,都没有必要打电话给
Class.forName
。很久以前就对 JDBC 进行了重新架构,以通过 Java 服务提供者接口 (SPI) 自动加载和注册所有可用的 JDBC 驱动程序。
养成使用
DataSource
接口和实现的习惯。在实际工作中,这使您最终能够在源代码之外外部化数据库连接信息(用户名、密码、服务器地址等)。同时,写一个这样的方法:
private DataSource dataSource ( )
{
com.mysql.cj.jdbc.MysqlDataSource dataSource = new com.mysql.cj.jdbc.MysqlDataSource(); // Implementation of `DataSource`.
dataSource.setServerName( "localhost" );
dataSource.setPortNumber( 3306 );
dataSource.setDatabaseName( "example_db_" );
dataSource.setUser( "scott" );
dataSource.setPassword( "tiger" );
return dataSource;
}
使用 try-with-resources 语法来简化代码,同时自动关闭打开的数据库资源。
String sql = … ;
try
(
Connection connection = dataSource.getConnection() ;
Statement statement = … ;
ResultSet resultSet = … ;
)
{
… Handle your ResultSet.
}
catch ( … )
{
… Handle error conditions.
}
您将找到我编写的多个完整示例应用程序的源代码,这些示例应用程序演示了 JDBC 与 MySQL、H2 和 Postgres,更不用说 Stack Overflow 上的其他优秀现有材料了。搜索了解更多。
这是一个由 Quickstart 原型创建的 Maven POM 示例,然后由我调整以更新所有版本,并使用 JUnit Jupiter 的聚合器版本。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>work.basil.example</groupId>
<artifactId>ExMySql</artifactId>
<version>1.0-SNAPSHOT</version>
<name>ExMySql</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>22/maven.compiler.release>7</maven.compiler.release>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.0.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.12.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.6.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>