在 Ubuntu 22.04 分布式中运行 Java 代码

在 Ubuntu 22.04 分布式中运行 Java 代码

我是这个领域的新手,正在尝试在 Ubuntu 中使用 Java 进行一些测试

我用 Java 编写了一个代码来连接我的本地主机 mssql 服务器并创建一个新的数据库。该代码在 Windows 上进行了测试并且运行正常,我将其复制粘贴到 Ubuntu 服务器 22.04 服务器上并使用命令对其进行了编译:javac 数据库连接.java 运行以下命令:java 数据库连接

一旦我运行以下命令java 数据库连接我收到以下错误

Error: Could not find or load main class db_connect Caused by: java.lang.NoClassDefFoundError: db_connection/db_connect (wrong name: db_connect)

我的主要公共类名是db_connect。

我应该在代码中更改哪些内容或添加模块来尝试运行已编译的 java 文件。

提前谢谢您!

找到下面的代码:

package db_connection;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class db_connect {
  void func1() {
    String url =("jdbc:sqlserver://localhost:1433;integratedSecurity=true;");
    String user="";      
    String password = "";
    try(Connection conn = DriverManager.getConnection(url,user,password)) {             
      Statement stmt = conn.createStatement();        
      String sql1 = "create database TM_users";                         
      stmt.executeUpdate(sql1);
      System.out.println("Database created successfully...");  
      
//check if DB Exists
      String checkDBName = "bd1";
      ResultSet rs = conn.getMetaData().getCatalogs();
      boolean dbExists = false;
      while (rs.next()) {
        String databaseName = rs.getString(1);
        if (databaseName.equalsIgnoreCase(checkDBName)) {
          dbExists = true;
          break;
        }
      }
      rs.close();
      if (dbExists) {
        System.out.println("Database already exists.");
      }else {
        String sql = "CREATE DATABASE db_1";
        stmt.executeUpdate(sql);
        System.out.println("Database 'db_1' created successfully.");
      }
    }
    catch(Exception e) {
      System.out.println("Err =>" + e.getMessage());       
    }
  }
    
  public static void main(String[] args) throws SQLException {
    db_connect ob1 = new db_connect();
    ob1.func1();
  }
}

答案1

您可能在 Windows 上使用 IDE 来管理此操作。您不应该只是“复制粘贴到 Ubuntu 服务器 22.04 服务器”并运行命令,而不测试它们是否能在 Windows 上运行。

选项 1:使用正确的文件夹结构运行

  1. 将您的代码粘贴到里面/path/to/project/db_connection/db_connect.java 。不要直接将其放在里面/path/to/project
  2. cd /path/to/project. 没有任何子文件夹
  3. javac ./db_connection/db_connect.java
  4. java db_connection.db_connect

选项 2:删除包声明

如果您不想更改运行的命令,则可以更改package db_connection;。这是一种糟糕的 Java 编码习惯,并且假定您在包中没有任何其他需要的类db_connection。为了避免混淆错误,最好将 转换class db_connect为 PascalCase。

相关内容