如何使用sqlite db编译java控制台应用程序(仅在终端中启动应用程序)

时间:2018-05-29 15:40:15

标签: java sqlite javac

我遇到了问题。我有一个控制台应用程序,它正在使用SQLite数据库。用户在控制台中输入密码,而不是我的应用程序对其进行加密,我需要将哈希写入数据库。我只使用javac和java命令在ubuntu终端中编译和推送我的应用程序,因为我使用Console对象实例及其方法readPassword(),并且无法在intellij idea内置终端中使用我的应用程序。 每次我的应用程序尝试使用db时都会出现这种异常:

  

java.lang.ClassNotFoundException:org.sqlite.JDBC           at java.net.URLClassLoader.findClass(URLClassLoader.java:381)           at java.lang.ClassLoader.loadClass(ClassLoader.java:424)           在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349)           at java.lang.ClassLoader.loadClass(ClassLoader.java:357)           at java.lang.Class.forName0(Native Method)           at java.lang.Class.forName(Class.java:264)           在com.company.DBHelper.connect(DBHelper.java:12)           在com.company.StringOperator.save(StringOperator.java:15)           在com.company.PasswordHelper.start(PasswordHelper.java:30)           在com.company.Main.main(Main.java:14)

这是我上班的DB:

package com.company;

import java.sql.*;

class DBHelper {
    private static Connection connection;
    private static Statement statement;
    static private final String tableName = "passwords";

    static void connect() throws ClassNotFoundException, SQLException {
        connection = null;
        Class.forName("org.sqlite.JDBC");
        connection = DriverManager.getConnection("jdbc:sqlite:password.db");

        System.out.println("Connected");
    }

    static void createDB() throws ClassNotFoundException, SQLException
    {
        statement = connection.createStatement();
        statement.execute("CREATE TABLE if not exists '" + tableName + "' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, 'hash' text);");
        System.out.println("Table was created or already exists");
    }

    static void writeToDB(String password) throws SQLException
    {
        String query = "INSERT INTO '" + tableName + "' ('hash') VALUES ('" + password + "');";
        statement.execute(query);

        System.out.println("Password was successfully added to DB");
    }

    static void close() throws SQLException
    {

        statement.close();
        connection.close();

        System.out.println("Connection is closed");
    }
}

我非常确定这段代码没问题,因为我已经在另一个控制台应用程序中测试了它,只需输入简单的数据(简单的Scanner),所以我在IntelliJ内置了它 - 控制台。 我只是不能意识到,我需要如何编译它,也许是以某种特殊的方式使用javac或者smth else。我在很多方面搜索过这个问题,我在intelliJ中设置了不同的属性,但它没有帮助。

0 个答案:

没有答案