Я пытался заставить мою программу работать, но продолжаю получать сообщение java .lang.ClassNotFoundException.
Я использую Eclipse 2019 на Windows и у меня установлен JDK 1.8. Когда я запускаю программу из меню Run Eclipse, она работает нормально. Но после экспорта JAR и запуска из CLI, это исключение. Я включаю драйвер DB2 в проект, так как эту программу планируется запустить на другом компьютере.
public static void main(String[] args) {
Properties prop = new Properties();
Connection connection = null;
// Load the properties from the resource
try {
InputStream inputStream = WebsiteUpdater.class.getClassLoader().getResourceAsStream("database.properties");
prop.load(inputStream);
inputStream.close();
} catch (IOException ex) {
System.out.println("Failed to load properties file from resources");
ex.printStackTrace();
return;
}
// Connect to the database
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
}
catch(ClassNotFoundException cnfex) {
// THIS IS THE EXCEPTION THAT IS THROWN
System.out.println("Problem in loading or registering IBM DB2 JDBC driver");
cnfex.printStackTrace();
return;
}
try {
connection = DriverManager.getConnection(
"jdbc:db2://" + prop.getProperty("database.server") + ":" + prop.getProperty("database.port") + "/" + prop.getProperty("database.dbname"),
prop.getProperty("database.user"),
prop.getProperty("database.password"));
} catch (SQLException e1) {
System.out.println("Failed to get connection");
e1.printStackTrace();
return;
}
// Close and exit
try {
connection.close();
} catch (SQLException e) {
System.out.println("Failed to close connection");
e.printStackTrace();
}
System.out.println("Program completed");
}
Я создал папку с именем libs и поместил туда файлы.
Затем я добавил пути к классам:
Как я уже сказал, программа работает в Eclipse. , но из командной строки я получаю:
Problem in loading or registering IBM DB2 JDBC driver
java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at net.mydomain.MyApp.main(MyApp.java:50)