Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 25
1

SQLite Ошибка при запуске с консоли

15.12.2020, 13:56. Показов 1449. Ответов 1
Метки нет (Все метки)

Добрый день, сделал консольную программу "Морской бой", которая состоит из 2-х классов. В ней используется внешняя библиотека sqlite-jdbc-3.32.3.2 для подключения базы данных. В IDE Netbeans программа работает без проблем, но при сборке и последующем запуске через консоль выпадает ошибка

Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
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 conn.Conn(conn.java:17)
at Battleship.main(Battleship.java:19)

С чем она может быть связана? Программу запускаю из папки src, где лежит 2 java файла и 2 класса.

Исходный код

Battleship.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
import java.io.IOException;
import java.sql.SQLException;
import java.util.Scanner;
 
public class Battleship {
 
 
    static String playerName1 = "Player#1"; //Обявляем переменные Player1 и Player2
    static String playerName2 = "Player#2";
    static Scanner scanner = new Scanner(System.in); // Создаем сканер. Механизм считывания с консоли
    static Scanner scanner2 = new Scanner(System.in); // Создаем сканер. Механизм считывания с консоли
    static int[][] battlefield1 = new int[10][10]; //Создаем 2 поля 10 на 10 для двух игроков
    static int[][] battlefield2 = new int[10][10];
    static int[][] monitor1 = new int[10][10];
    static int[][] monitor2 = new int[10][10];
    
 
    public static void main(String[] args) throws ClassNotFoundException, SQLException { //Точка входа
        conn.Conn();
        conn.CreateDB();
        System.out.println("Sea Battle:");
        System.out.println("1.Play.");
        System.out.println("2.Rules.");
        System.out.println("3.Statistics.");
        int choice = scanner.nextInt();
            switch (choice) {
                
                case 1:  
                    
        System.out.println("Player#1, please enter your name:");
        playerName1 = scanner2.nextLine(); //Считываем данные введенные в консоль
        System.out.println("Player#2, please enter your name:");
        playerName2 = scanner2.nextLine();
        placeShips(playerName1, battlefield1);
        placeShips(playerName2, battlefield2);
        while (true) {
            makeTurn(playerName1, monitor1, battlefield2);
            if (isWinCondition()) {
                conn.WriteDB_Player1();
                break;
            }
            makeTurn(playerName2, monitor2, battlefield1);
            if (isWinCondition()) {
                conn.WriteDB_Player2();
                break;
            }
        }
                    break;
                    
                case 2:
                    
 
                    return;
                    
                case 3:
                System.out.println("Statistics:");
                conn.ReadDB();
                conn.CloseDB();
 
    }
    }
   
 
    public static void placeShips(String playerName, int[][] battlefield) {
        int deck = 4;
        while (deck >= 1) {
            System.out.println();
            System.out.println(playerName + ", please place your " + deck + "-deck ship on the battlefield:");
            System.out.println();
 
            drawField(battlefield);
 
            System.out.println("Please enter OX coordinate:"); // Узнаем координаты для расстановки кораблей
            int x = scanner.nextInt();
            System.out.println("Please enter OY coordinate:");
            int y = scanner.nextInt();
            System.out.println("Choose direction:");
            System.out.println("1. Vertical.");
            System.out.println("2. Horizontal.");
            int direction = scanner.nextInt();
            if (!isAvailable(x, y, deck, direction, battlefield)){
                System.out.println("Wrong coordinates!");
                continue;
            }
            for (int i = 0; i < deck; i++) {
                if (direction == 1) { // Сравнение + размещаем корабли на оси y, иначе на оси x
                    battlefield[x][y + i] = 1; // От 1 до 4 палуб корабли по x
                } else {
                    battlefield[x + i][y] = 1; // от 1 до 4 палуб по y
                }
            }
            deck--;
            clearScreen();
        }
    }
 
    public static void drawField(int[][] battlefield) {
        System.out.println("  0 1 2 3 4 5 6 7 8 9");
        for (int i = 0; i < battlefield.length; i++) { // length переменная чтобы узнать длинну массива. 10 на 10 для Батлфилд. Рисуем поле
            System.out.print(i + " ");
            for (int j = 0; j < battlefield[1].length; j++) {
                if (battlefield[j][i] == 0) {
                    System.out.print("- ");
                } else {
                    System.out.print("X ");
                }
            }
            System.out.println();
        }
    }
 
    public static void makeTurn(String playerName, int[][] monitor, int[][] battlefield) {
        while (true) {
            System.out.println(playerName + ", please, make your turn.");
            System.out.println("  0 1 2 3 4 5 6 7 8 9");
            for (int i = 0; i < monitor.length; i++) {
                System.out.print(i + " ");
                for (int j = 0; j < monitor[1].length; j++) {
                    if (monitor[j][i] == 0) {
                        System.out.print("- ");
                    } else if (monitor[j][i] == 1) {
                        System.out.print(". ");
                    } else {
                        System.out.print("X ");
                    }
                }
                System.out.println();
            }
            System.out.println("Please enter OX coordinate:"); //
            int x = scanner.nextInt();
            System.out.println("Please enter OY coordinate:");
            int y = scanner.nextInt();
            if (battlefield[x][y] == 1) {
                System.out.println("Hit! Make your turn again!");
                monitor[x][y] = 2;
            } else {
                System.out.println("Miss! Your opponents turn!");
                monitor[x][y] = 1;
                break;
            }
            clearScreen();
        }
    }
 
    public static boolean isWinCondition() {
        int counter1 = 0;
        for (int i = 0; i < monitor1.length; i++) {
            for (int j = 0; j < monitor1[i].length; j++) {
                if (monitor1[i][j] == 2) {
                    counter1++;
                }
            }
        }
 
        int counter2 = 0;
        for (int i = 0; i < monitor2.length; i++) {
            for (int j = 0; j < monitor2[i].length; j++) {
                if (monitor2[i][j] == 2) {
                    counter2++;
                }
            }
        }
 
        if (counter1 >= 10) {
            System.out.println(playerName1 + "as Player1 WIN!!!");
            return true;
        }
        if (counter2 >= 10) {
            System.out.println(playerName2 + "as Player2 WIN!!!");
            return true;
        }
        return false;
    }
 
    public static boolean isAvailable(int x, int y, int deck, int rotation, int[][] battlefield) {
        // out of bound check
        if (rotation == 1) {
            if (y + deck > battlefield.length) {
                return false;
            }
        }
        if (rotation == 2){
            if (x + deck > battlefield[0].length){
                return false;
            }
        }
 
        //neighbours check without diagonals
        //XXXX
        while (deck!=0){
            for (int i = 0; i < deck; i++) {
                int xi = 0;
                int yi = 0;
                if (rotation == 1){
                    yi = i;
                } else{
                    xi = i;
                }
//                battlefield[x ][y];
                if (x + 1 + xi < battlefield.length && x + 1 + xi >= 0){
                    if (battlefield[x + 1 + xi][y + yi]!=0){
                        return false;
                    }
                }
                if (x - 1 + xi < battlefield.length && x - 1 + xi >= 0){
                    if (battlefield[x - 1 + xi][y + yi]!=0){
                        return false;
                    }
                }
                if (y + 1 + yi < battlefield.length && y + 1 + yi >= 0){
                    if (battlefield[x + xi][y + 1 + yi]!=0){
                        return false;
                    }
                }
                if (y - 1 + yi < battlefield.length && y - 1 + yi >= 0){
                    if (battlefield[x + xi][y - 1 + yi]!=0){
                        return false;
                    }
                }
            }
            deck--;
        }
        return true;
    }
 
    public static void clearScreen(){
        try {
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        } catch (InterruptedException | IOException e) {
            e.printStackTrace();
        }
    }
}
]
conn.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
 
public class conn {
    public static Connection conn;
    public static Statement statmt;
    public static ResultSet resSet;
    
    // --------Connect Base--------
    public static void Conn() throws ClassNotFoundException, SQLException 
       {
           conn = null;
           Class.forName("org.sqlite.JDBC");
           conn = DriverManager.getConnection("jdbc:sqlite:TEST1.s3db");
           
           System.out.println("SQL Connected!");
       }
    
    // --------Create Table--------
    public static void CreateDB() throws ClassNotFoundException, SQLException
       {
        statmt = conn.createStatement();
        statmt.execute("CREATE TABLE if not exists 'players' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, 'name' text);");
        
        System.out.println("The table has been created or already exists..");
       }
    
    // ----------------
    public static void WriteDB_Player1() throws SQLException
    {
                   statmt.execute("INSERT INTO 'players' ('name') VALUES ('Player1'); ");
          
           System.out.println("Statistics update!");
    }
        
        // ----------------
    public static void WriteDB_Player2() throws SQLException
    {
                   statmt.execute("INSERT INTO 'players' ('name') VALUES ('Player2'); ");
          
           System.out.println("Statistics update!");
    }
        
        // ----------------
    public static void DeleteDB() throws SQLException
        {
              statmt = conn.createStatement();
                  statmt.execute("DROP TABLE 'players' ");
 
     }
        
        
    
    // -------- Вывод таблицы--------
    public static void ReadDB() throws ClassNotFoundException, SQLException
       {
        resSet = statmt.executeQuery("SELECT * FROM players");
        
        while(resSet.next())
        {
            int id = resSet.getInt("id");
            String  name = resSet.getString("name");
             System.out.println( "ID = " + id );
             System.out.println( "name = " + name );
             System.out.println();
        }   
        
        System.out.println("Statictis show:");
        }
    
        // --------Закрытие--------
        public static void CloseDB() throws ClassNotFoundException, SQLException
           {
            conn.close();
            statmt.close();
            resSet.close();
            
            System.out.println("Connection SQL close");
           }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2020, 13:56
Ответы с готовыми решениями:

Ошибка NoSuchMethodError: при запуске из консоли
Всем привет. Прошу не кидаться камнями, только начал учить java. Просьба помочь понять в чем...

Ошибка при запуске с консоли
Запускаю с консоли. Нужно чтоб заработал оператор if при вводе без дополнительных...

Ошибка при запуске скрипта в консоли
# Change into a temp dir: cd $(mktemp -dt) # Download and extract the model of Delft: wget...

Ошибка при запуске sh скрипта из консоли
Добрый день! Есть .sh скрипт: #!/bin/bash sudo cp /var/log/apache2/domains/domain.log...

1
Супер-модератор
Эксперт PythonЭксперт Java
7570 / 4153 / 1536
Регистрация: 21.10.2017
Сообщений: 11,718
15.12.2020, 17:34 2
Цитата Сообщение от gary100340 Посмотреть сообщение
но при сборке
Как собирал?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2020, 17:34

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ошибка при запуске консоли управления
Привет всем, у меня такая ошибка на Exchenge 2010 на 2008 R2

Ошибка при запуске скрипта под админской учеткой в консоли
Добрый день, Товарищи, мастера PowerShel! Есть скрипт по авторизации и скачиванию файлов с...

Программа работает при запуске в CodeLite, но не работает при запуске в консоли
Здравствуйте, подскажите пожалуйста в чем проблема??? При компилировании и запуске программы в...

Задать размер консоли при запуске
Здравствуйте,подскажите как можно задать размер консоли в паскаль ABC .NET. Сделал программу с...

Скрыть окно консоли при запуске
Скрыть окно консоли при запуске в процессы. Написал кусок программы теперь интересует как его...

Скрыть окно консоли при запуске tkinter
Как скрыть надоедливое консольное окошко при запуске tkinter программ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.