Я приступил к программированию Java, у меня есть виртуальная машина CentOS 7.7.1908 с Java 1.8.0_242 OpenJDK, и моя IDE Apache Netbeans 11.3. Я пытаюсь разработать небольшую программу для чтения данных из стандартного ввода и сохранения их в базе данных PostgreSQL. Для этого мне нужно собрать свою программу в файл .jar и запустить ее из командной строки, поскольку она предназначена для передачи стандартного вывода другой программы в мою Java программу. Apache Netbeans уже поставляется с прилагаемым PostgreSQL драйвером, я мог бы правильно добавить соединение на вкладке «Службы», раздел «Драйверы», и я мог бы также правильно просмотреть схему базы данных на этой вкладке.
Однако, когда Я пытаюсь включить драйвер PostgreSQL в качестве библиотеки моего проекта, я не вижу ни одного раздела «Библиотека» в окне свойств проекта, как показано здесь. Очевидно, это не позволит мне продолжить работу с моей программой, потому что я просто попытался настроить Apache Maven для добавления записи Class-Path
в манифест моего .jar, вручную передавая путь к классу, запустив мой .jar с java -cp <directory of my PGSQL driver> -jar <JAR file>
, установка переменной среды CLASSPATH, и ни одна из них не сработала; моя программа продолжает отказываться загружать драйвер PostgreSQL JDB C.
Вот что я вижу в диалоговом окне "Свойства" в моем NetBeans:
Это мой код, максимально упрощенный для отображения только соответствующих разделов.
package com.example.pgsqlclient;
import java.sql.*;
import java.io.*;
import java.util.Scanner;
public class PGsqlClient
{
public static void main(String args[])
{
Connection PGSQL_connection = null;
String PGSQL_URI = "jdbc:postgresql://192.168.1.74:5432/keypresses";
PreparedStatement PGSQL_query = null;
try
{
Class.forName("org.postgresql.Driver");
}
catch (ClassNotFoundException ex)
{
System.err.println("PostgreSQL driver not found.");
ex.printStackTrace();
System.exit(1);
}
try { PGSQL_conexion.close();}
catch (SQLException ex)
{ System.err.println("Failed to close the PostgreSQL connection."); System.exit(1); }
System.exit(0);
}
}
И это то, что я получаю, когда запускаю свой файл .jar
[centos@centos target]$ java -cp /home/centos/NetBeansProjects/pgsqlclient/target/lib/postgresql-42.2.10.jar -jar pgsqlclient-1.0-SNAPSHOT.jar
PostgreSQL driver not found.
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.example.pgsqlclient.PGsqlCliente.main(PGsqlCliente.java:28)