【问题标题】:Why I get "Error: Could not find or load main class mysql-connector-java-8.0.19.jar "?为什么我得到“错误:无法找到或加载主类 mysql-connector-java-8.0.19.jar”?
【发布时间】:2020-06-10 06:34:16
【问题描述】:

我在ubuntu 20.04操作系统中安装了MySQL。

Mysql version:-mysql  Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

在我的操作系统中安装了 Java open jdk-8。

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1ubuntu1-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

我已经编写了一个 JDBC 程序来创建表并将其保存在 /workspace/jdbc/firstApplication 目录中并使用 javac filename.java 编译它并复制 .jar 文件是相同的目录,当我这样做时,一切都很好

java -cp .: mysql-connector-java-8.0.19.jar Fetchdata 我得到:-

错误:无法找到或加载主类 mysql-connector-java-8.0.19.jar

我把程序和编译过程贴在下面:-

程序:-

import java.sql.*;
public class Fetchdata
{
        public static void main(String[] args) throws Exception
        {
                String driver="com.mysql.cj.jdbc.Driver";
                String JDBC_URL=" jdbc:mysql://localhost:3306/demodatabase";
                String user_name="root";
                String password="toor";
                String sql_query1="create table employee(eno number,ename varchar2(10),esal number(10,2),addr varchar2(10))";
                Class.forName(driver);
                Connection con=DriverManager.getConnection(JDBC_URL,user_name,password);
                Statement st=con.createStatement();
                st.executeUpdate(sql_query1);
                System.out.println("Table created Successfully");
                con.close();
        }
}

编译过程:-

atharva@focalfossa:~/workspace/jdbc/firstApplication$ javac Fetchdata.java
atharva@focalfossa:~/workspace/jdbc/firstApplication$ ls
atharva@focalfossa:~/workspace/jdbc/firstApplication$  java -cp .: mysql-connector-java-8.0.19.jar Fetchdata
Error: Could not find or load main class mysql-connector-java-8.0.19.jar
atharva@focalfossa:~/workspace/jdbc/firstApplication$ 

Java 版本、MySQL 版本和 .jar 是否相互不适合,或者我的代码有任何问题或与我的编译过程有关。

【问题讨论】:

  • 删除.:mysql-connector-java-8.0.19.jar之间的空格。 mysql-connector-java-8.0.19.jar 现在被视为您要运行的类,而不是类路径上的库。

标签: java mysql linux jdbc


【解决方案1】:

您的命令行中的空格过多:

java -cp .: mysql-connector-java-8.0.19.jar Fetchdata

.: 后面的空格表示你的类路径由.: 组成,下一个标记 (mysql-connector-java-8.0.19.jar) 被解释为主类的名称。

使用

java -cp .:mysql-connector-java-8.0.19.jar Fetchdata

运行你的程序。

【讨论】:

  • 应该用分号分割吗? 指定目录、JAR 文件和 ZIP 档案的列表以搜索类文件。用分号 (;) 分隔类路径条目。指定 -classpath 或 -cp 会覆盖 CLASSPATH 环境变量的任何设置。
  • @ScaryWombat 最近一定改过,甚至版本 14 (docs.oracle.com/en/java/javase/14/docs/specs/man/java.html) 中的 java 工具的文档也包含“然后类路径元素 mydir/* 扩展为 A.jar :b.JAR",用冒号分隔类路径元素
  • @ScaryWombat Windows 使用 ;,而 Linux 等使用 :。 Windows 是异常值,因为驱动器号中有:
  • @MarkRotteveel 谢谢,我一直认为文档不太正确。
猜你喜欢
  • 2017-11-25
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多