2011-10-30 20 views
0

我的代码在Eclipse中编译并运行良好,但是当我尝试将它变成.jar时,它给了我一堆错误。使用SQL的Java程序 - 编译成.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; 

回答

2

您需要设置类路径以包含所需的jar文件。至少,JDBC驱动程序不在编译类路径上。

我强烈建议不要使用批处理文件,除了大多数简单情况下,至少目标是Ant构建脚本。它非常了解Java应该如何工作,并使这些问题更容易解决。

+0

我在我的类路径中有jdbc驱动程序 – user1021085

+0

@ user1021085我怀疑它,或者你不会得到那个错误。在批处理文件中明确地设置它。为什么要复制源文件? –

+0

我的类路径包括: C:\ Users \ shahin \ Desktop \ mysql-connector-java-5.1.18 \ com \ mysql \ jdbc \ 我在那里。 我复制了源文件,因为我想在jar中有源代码,所以朋友们可以检查源代码。 – user1021085