еще одна ошибка новичка Java для "java.lang.ClassNotFoundException" - PullRequest
1 голос
/ 23 февраля 2012

Я новичок в Java и пытаюсь написать простую программу с использованием JDBC. Это должно быть что-то очевидное, но я просто не вижу этого. Я определял путь к классам вручную, потому что только два класса (по крайней мере, я думаю , в которых нуждается программа при запуске, находятся в том же каталоге, что и программа, то есть файлы для ojdbc_g.jar и JDBCexample.class).

Программа прекрасно компилируется с использованием:

javac -cp ./ojdbc_g.jar JDBCexample.java

Как вы можете сказать, драйвер Oracle JDBC (ojdbc_g.jar) находится в том же каталоге, что и файл: JDBCexample.java. После компиляции у меня теперь также есть файл JDBCexample.class в этом же каталоге. Когда я пытаюсь запустить его с помощью:

java -classpath "*" JDBCexample    or,
java -classpath ./ojdbc6_g.jar:./JDBCexample.class JDBCexample  or,
java -classpath "*":ojdbc6_g.jar JDBCexample

Я получаю следующую ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: JDBCexample
Caused by: java.lang.ClassNotFoundException: JDBCexample
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: JDBCexample.  Program will exit.

Вот файл: JDBCexample.java:

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;

class JDBCexample {

    public static void main(String args[]) throws SQLException {
            Connection conn;
            Statement stmt;
            String query;
            String sqlString;
            ResultSet rset;

            // connect to database
            OracleDataSource ds = new OracleDataSource();
            ds.setURL("jdbc:oracle:thin:@host6.mydomain.com:1521:ORCL");
            conn = ds.getConnection(HR,HR);

            // create Oracle DatabaseMetaData object
            DatabaseMetaData meta = conn.getMetaData();
            // show JDBC driver version
            System.out.println("JDBC driver version is " + meta.getDriverVersion());
    }

1 Ответ

3 голосов
/ 23 февраля 2012

Вы компилируете класс в local directory. Поэтому, когда вы запускаете его, вам нужно include текущий каталог в вашем classpath.

Если на linux машине

java -cp .:./ojdbc6_g.jar JDBCexample

если на Windows машине

java -cp .;./ojdbc6_g.jar JDBCexample
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...