Java-программа, использующая SQL - компилируется в .jar - PullRequest
0 голосов
/ 31 октября 2011

Мой код компилируется и отлично работает в Eclipse, но когда я пытаюсь превратить его в .jar, он выдает мне кучу ошибок.

Код, файл .bat, который я использую для компиляции.jar и мое сообщение об ошибке можно найти здесь:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Scanner;
import com.mysql.jdbc.PreparedStatement;


public class Main
{
        private static Scanner scn = new Scanner(System.in);

        public static void main(String[] argv) throws Exception
        {
                Class.forName("com.mysql.jdbc.Driver");

                Main main = new Main();
                int choice = 0;

                System.out.println("\t\tWelcome !\n\n");

                System.out.print(
                                           "1. Get Data From the table \"testtable\"\n"+
                                           "2. Insert data into the table \"testtable\"\n"+
                                           "Your choice?: "
                                                  );
                choice = scn.nextInt();
                scn.nextLine();

                switch( choice )
                {
                case 1:
                        main.getInfo();
                        break;

                case 2:
                        main.insertInfo();
                        break;

                default:
                        System.out.print("Was neither 1 or 2. Terminating program...");
                }


        }

        private void getInfo() throws Exception
        {
                //Class.forName("com.mysql.jdbc.Driver");

                Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "guest", "shahin33");
                PreparedStatement statement = (PreparedStatement) con.prepareStatement("SELECT * FROM testtable");
                ResultSet result = statement.executeQuery();

                System.out.println();

                System.out.println("USERNAME\tPASSWORD");
                while( result.next() )
                {
                        System.out.println(result.getString(1) + "\t\t" + result.getString(2));
                }

                result.close();
                con.close();
        }

        private void insertInfo() throws Exception
        {
                System.out.print("\nUsername: ");
                String username = scn.nextLine();

                System.out.print("Password: ");
                String password = scn.nextLine().toLowerCase();

                Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "guest", "shahin33");
                PreparedStatement statement = (PreparedStatement) con.prepareStatement("INSERT INTO testtable VALUES(?,?)");
                statement.setString(1, username);
                statement.setString(2, password);
                statement.executeUpdate();

                System.out.println("\nUser information has been inserted to the database.\nRun the program again and chose 1 to see result.");
                statement.close();
                con.close();

        }
}

.bat файл, который я использую для компиляции в .jar:

@echo off

set /p fileName="Name for the file? Exclude .jar: "

copy *.java "Source Code"
javac *.java

jar -cvfm %fileName%.jar manifest.txt *.class "Source Code"

del *.class /f /q
del "Source Code" /f /q

Мое сообщение об ошибке:

C:\Users\shahin\Desktop\JavaComp>Compile_N_Whatnot.bat
Name for the file? Exclude .jar: comonXXXXXX
Main.java
        1 fil(er) kopierad(e).
Main.java:5: error: package com.mysql.jdbc does not exist
import com.mysql.jdbc.PreparedStatement;
                     ^
Main.java:51: error: cannot find symbol
                PreparedStatement statement = (PreparedStatement) con.prepa
tement("SELECT * FROM testtable");
                ^
  symbol:   class PreparedStatement
  location: class Main
Main.java:51: error: cannot find symbol
                PreparedStatement statement = (PreparedStatement) con.prepa
tement("SELECT * FROM testtable");
                                               ^
  symbol:   class PreparedStatement
  location: class Main
Main.java:75: error: cannot find symbol
                PreparedStatement statement = (PreparedStatement) con.prepa
tement("INSERT INTO testtable VALUES(?,?)");
                ^
  symbol:   class PreparedStatement
  location: class Main
Main.java:75: error: cannot find symbol
                PreparedStatement statement = (PreparedStatement) con.prepa
tement("INSERT INTO testtable VALUES(?,?)");

Мой путь к классу:

C:\Program\Java\jdk1.7.\bin\;
C:\Users\shahin\Desktop\mysql-connector-java-5.1.18\com\mysql\jdbc\;
C:\Users\shahin\Desktop\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar;

1 Ответ

2 голосов
/ 31 октября 2011

Вам нужно настроить classpath для включения необходимых jar-файлов. По крайней мере, драйвер JDBC отсутствует в пути к классам компиляции.

Я бы настоятельно рекомендовал не использовать пакетные файлы для этого во всех случаях, кроме большинства простых ситуаций, по крайней мере, для сценария Ant . Он много знает о том, как должен работать Java-компонент, и облегчает решение подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...