Как установить путь ojdbc.jar для базового Java-приложения в Linux? - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь подключить мое основное приложение JavaRMI к базе данных Oracle. Но я застрял с банкой ojdbc и ClassNotFoundException. Я не могу использовать некоторые IDE (учитель не хочет), поэтому я должен делать все с помощью блокнота и терминала. Я использую Ant для компиляции приложения. Есть структура: - Сборка (содержит все .class и заглушки) - lib / oracle / (содержит пакет oracle-full, найденный на сайте, с ojdbc7.jar) - src (содержит все .java) - build.xml (для муравья)

Я обнаружил, что должен использовать Class.forName("oracle.jdbc.driver.OracleDriver");. Но не работал один. В следующий раз я основал несколько человек, которые сказали, что мы должны установить путь к классам, так что я делаю: export CLASSPATH=$CLASSPATH:./lib/oracle/ojdbc7.jar но ничего не происходит. Я начинаю пробовать с Maven, но я сдаюсь, потому что зависимости не могут быть легко загружены (лицензия Oracle).

Смотрите за выдержкой из моего кода:

import java.rmi.server.*;
import java.net.*;
import java.rmi.*;
import java.sql.*;
import java.util.ArrayList;

public class ObjectFactoryCompte extends UnicastRemoteObject implements IObjectFactoryCompte {
    private Connection dbConnection;
    private ArrayList<Compte> instantiatedAccounts = new ArrayList<Compte>();

    public static void main(String[] args) {
        try {
          ObjectFactoryCompte serveur = new ObjectFactoryCompte();
          String nom = "compteFactory";
          // Enregistrement
          Naming.rebind(nom, serveur);
          System.out.println("Serveur enregistré avec succès !");
        } catch (Exception e) {
          System.err.println("Erreur : " + e);
        }
    }

    public ObjectFactoryCompte() throws RemoteException {
        super();
        try {
            connectToDatabase();
        } catch (ClassNotFoundException e) {
            System.err.println("Impossible de trouver le .jar correspondant au jdbc Oracle.");
            System.err.println("Fin de l'application.");
            System.exit(2);
        } catch (SQLException e) {
            System.err.println("Une erreur s'est produite lors de la connexion à la base de données avec pour cause :");
            e.printStackTrace();
            System.err.println("Fin de l'application.");
            System.exit(1);
        }
    }

    private void connectToDatabase() throws ClassNotFoundException, SQLException {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String host = "jdbc:oracle:thin:@srv:port:thing";
        String user = "usr";
        String pwd = "pwd";
        dbConnection = DriverManager.getConnection(host, user, pwd);
    }
}

Можете ли вы помочь мне решить эту проблему, пожалуйста? У меня заканчиваются идеи ...: /

Спасибо

1 Ответ

0 голосов
/ 11 января 2019

Вы можете добавить jar в classpath во время выполнения - если вы хотите это сделать ... (что не звучит желательным, но это все-таки какой-то вариант)

См Добавление файлов в путь к классам Java во время выполнения для деталей.

...