我是这个领域的新手,正在尝试在 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:使用正确的文件夹结构运行
- 将您的代码粘贴到里面
/path/to/project/db_connection/db_connect.java
。不要直接将其放在里面/path/to/project
。 cd /path/to/project
. 没有任何子文件夹javac ./db_connection/db_connect.java
java db_connection.db_connect
选项 2:删除包声明
如果您不想更改运行的命令,则可以更改package db_connection;
。这是一种糟糕的 Java 编码习惯,并且假定您在包中没有任何其他需要的类db_connection
。为了避免混淆错误,最好将 转换class db_connect
为 PascalCase。