My code compiles and runs fine in Eclipse, but when I try to make it into a .jar it gives me a bunch of errors.
The code, the .bat file I use to compile into .jar and my error message can be found here:
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();
}
}
The .bat file I use to compile into a .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
My error message:
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(?,?)");
My classpath:
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;
You need to set up the classpath to include the required jar files. At the least, the JDBC driver is not on the compilation classpath.
I’d strongly recommend not using batch files for this in all but the most simple situations, at the least aim for an Ant build script. It knows a lot about how Java stuff is supposed to work, and makes these kinds of problems easier to solve.