我正在使用Microsoft SQL Server JDBC驱动程序插入学生注册字段以用于学习数据库。我已经成功创建了 java应用程序并且该应用程序正常运行 当我运行它时作为一个java程序。 现在我将Java程序转换为jar文件,同时将Java程序转换为jar文件我采取了所有预防措施,例如将外部jar文件复制到lib文件夹并提供本机库路径到Jdbc驱动程序jar文件。 但仍然当我运行我的jar文件时,我收到以下错误,请指导我:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
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 bean.DbConnectClass.jdbcConnction(DbConnectClass.java:16)
at Main.main(Main.java:21)
请注意我使用的是Java 8版本,目前我正在使用jar文件的兼容版本。
我的清单文件包含以下内容:
Manifest-Version: 1.0
Main-Class: Main
我的代码如下:我只是通过将参数传递给创建的jar文件,通过main方法调用此类。
public class DbConnectClass {
Connection connection = null;
Statement stmt = null;
public void jdbcConnction (){
try{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
**System.out.println("Where is your MSSQL JDBC Driver?");**
e.printStackTrace();
return;
}
System.out.println("MsSQL JDBC Driver Registered!");
try {
connection = DriverManager
.getConnection("jdbc:sqlserver://127.0.0.1:1433;instance=DELL\\HOME;DatabaseName=Prime_Student","confidential", "confidential");
//jdbc:sqlserver://10.105.219.102:1433;instance=OVOPS;DatabaseName=openview;integratedSecurity=true
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return;
}
if (connection != null) {
stmt = connection.createStatement();
System.out.println("You made it, take control your database now!");
} else {
System.out.println("Failed to make connection!");
}
}catch(Exception e){
e.printStackTrace();
}
}
public String insertUpdate(String id,String time,String location,String StudentName,String Description,String TeacherName,String SubjectTxt,String Room_Id)
{
CallableStatement cstmt = null;
try {
System.out.println("Going to insert the data");
cstmt = connection.prepareCall(
"{call insert_to_Load_StudentData(?,?,?,?,?,?,?,?)}",
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
cstmt.setString("parm1", id);
cstmt.setString("parm2", StudentName);
cstmt.setString("parm3", location);
cstmt.setString("parm4", Description);
cstmt.setString("parm5", TeacherName);
cstmt.setString("parm6", SubjectTxt);
cstmt.setString("parm7", time);
cstmt.setString("parm8", Room_Id);
boolean results = cstmt.execute();
//int rowsAffected = 0;
if (results==false)
{
System.out.println("Data Inserted sucesfully");
}
else
{
System.out.println("Data is inserted properly");
}
//ResultSet rs = null;
}catch(Exception e){
e.printStackTrace();
}
return "";
}
public void closeConnection (){
try{
connection.close();
stmt.close();
}catch(Exception e){
}
}
}
Modified Manifest File
Manifest-Version: 1.0
Main-Class: Main
Class-Path: . sqljdbc4.jar
我也尝试运行以下命令:
jar -cvfm jarfilename.jar manifest.mf *.class
但显示未识别的批处理命令,然后我将此命令修改为
java -jar -cvfm jarfilename.jar manifest.mf *.class
以上命令出现的错误是
Unrecognized option -cvfm
Error: Could not create the Java Virtual Machine
Error: A fatal exception has occurred Program will exit.
请指导我,请注意,即使仍在对Manifest.mf进行修改,例外情况仍然存在。