我的代码在Eclipse中编译并运行良好,但是当我尝试将其变成.jar时,它会给我一些错误。
代码,我用来编译成.jar的.bat文件,我的错误信息可以在这里找到:
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();
}
}
我用来编译成.jar的.bat文件:
@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;
答案 0 :(得分:2)
您需要设置类路径以包含所需的jar文件。至少,JDBC驱动程序不在编译类路径上。
我强烈建议不要在除大多数简单情况之外的所有情况下使用批处理文件,至少目标是Ant构建脚本。它非常了解Java内容应该如何工作,并使这些问题更容易解决。