Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NoClassDefFoundError:StudentRegistrar_Java_Noclassdeffounderror - Fatal编程技术网

Java NoClassDefFoundError:StudentRegistrar

Java NoClassDefFoundError:StudentRegistrar,java,noclassdeffounderror,Java,Noclassdeffounderror,我的代码中出现了错误,几个小时来我一直在努力解决这个问题。有什么想法吗。。。。此应用程序中有两个java文件和一个DB.properties文件。现在,程序除了测试与数据库的连接之外,不应该做任何事情。如果我错过了什么,请原谅我,因为我是Java新手 StudentRegistrar.java package studentregistrar; import java.io.File; import java.sql.Connection; import java.sql.ResultSet

我的代码中出现了错误,几个小时来我一直在努力解决这个问题。有什么想法吗。。。。此应用程序中有两个java文件和一个DB.properties文件。现在,程序除了测试与数据库的连接之外,不应该做任何事情。如果我错过了什么,请原谅我,因为我是Java新手

StudentRegistrar.java

package studentregistrar;


import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class StudentRegistrar {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception
{


    // TODO code application logic here
    System.out.println(args);
    System.out.println(args.length);
    if (args.length == 0)
    {
        System.out.println("Usage: java -classpath driver_class_path" 
                + File.pathSeparator 
                + ".  Test DB.properties");
        return;
    }
    else
        SimpleDataSource.init(args[0]);

    Connection conn = SimpleDataSource.getConnection();
    try
    {
        Statement stat = conn.createStatement();

        stat.execute("CREATE TABLE Test (Name CHAR(20))");
        stat.execute("INSERT INTO Text VALUES ('Romeo')");

        ResultSet result = stat.executeQuery("Select * FROM Test");
        result.next();
        stat.execute("DROP TABLE Test");
    }
    finally
    {
        conn.close();
    }
}
}
package studentregistrar;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;


public class SimpleDataSource {

public static void init(String filename)
        throws IOException, ClassNotFoundException
{
    Properties props = new Properties();
    FileInputStream in = new FileInputStream(filename);
    props.load(in);
    String driver = "com.mysql.jdbc.Driver";
    url = props.getProperty("jdbc.url");
    username = props.getProperty("jdbc.username");
    if (username == null) username = "";
    password = props.getProperty("jdbc.password");
    if (password == null) password = "";
    if(driver != null)
        Class.forName(driver);
} 

public static Connection getConnection()
        throws SQLException
{
    return DriverManager.getConnection(url, username, password);
}

private static String url;
private static String username;
private static String password;

}
SimpleDataSource.java

package studentregistrar;


import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class StudentRegistrar {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception
{


    // TODO code application logic here
    System.out.println(args);
    System.out.println(args.length);
    if (args.length == 0)
    {
        System.out.println("Usage: java -classpath driver_class_path" 
                + File.pathSeparator 
                + ".  Test DB.properties");
        return;
    }
    else
        SimpleDataSource.init(args[0]);

    Connection conn = SimpleDataSource.getConnection();
    try
    {
        Statement stat = conn.createStatement();

        stat.execute("CREATE TABLE Test (Name CHAR(20))");
        stat.execute("INSERT INTO Text VALUES ('Romeo')");

        ResultSet result = stat.executeQuery("Select * FROM Test");
        result.next();
        stat.execute("DROP TABLE Test");
    }
    finally
    {
        conn.close();
    }
}
}
package studentregistrar;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;


public class SimpleDataSource {

public static void init(String filename)
        throws IOException, ClassNotFoundException
{
    Properties props = new Properties();
    FileInputStream in = new FileInputStream(filename);
    props.load(in);
    String driver = "com.mysql.jdbc.Driver";
    url = props.getProperty("jdbc.url");
    username = props.getProperty("jdbc.username");
    if (username == null) username = "";
    password = props.getProperty("jdbc.password");
    if (password == null) password = "";
    if(driver != null)
        Class.forName(driver);
} 

public static Connection getConnection()
        throws SQLException
{
    return DriverManager.getConnection(url, username, password);
}

private static String url;
private static String username;
private static String password;

}
DB.properties

jdbc.url=jdbc:mysql://localhost:3306/registrar
jdbc.username=root
jdbc.password=notmypassword
jdbc.driver=com.mysql.jdbc.Driver
我用NetBeans编译应用程序,根据我所知道的,我运行这个命令

 java -class driver_class_path:. StudentRegistrar DB.properties
我得到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: StudentRegistrar
Caused by: java.lang.ClassNotFoundException: StudentRegistrar
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: StudentRegistrar.  Program will exit.
我做错了什么!!!我肯定这是件愚蠢的事

谢谢你抽出时间。
Kevsteelio

您需要调整路径

首先找到StudentRegistrar.class存在的位置。一定是什么地方

<path to somefolder>/studentregistrar/StudentRegistrar.class
/studentregistrar/studentregistrar.class

将该
包含到类路径中。(类路径中的分隔符是特定于平台的。
适用于类unix和
windows)

每次使用此类进行连接

package pack1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Ali
 */
  class Connect {

    Connection con = null;
    public Connect() {
        String url = "jdbc:mysql://localhost:3306/database";
        String user = "user"; // defaultnya adalah root
        String pass = "****";// sesuaikan dengan konfigurasi saat install
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection(url, user, pass);

             System.out.print("connecté à la base!");
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
    }
        public Connection getCon() {
        return con;
    }
        public Connection crtst() {
        return con;
    }
}
在考试班上

     Connection con = new Connect().getCon();
             try{
      Statement st = con.createStatement();
      int val = st.executeUpdate("INSERT employee VALUES("+13+","+"'Aman'"+")");
      System.out.println("1 row affected");
      }
      catch (SQLException s){
      System.out.println("SQL statement is not executed!");
      }

如何在命令行中运行:

注意:SimpleDataSource.java、StudentRegistrar.java和mysql驱动程序(jar)位于运行以下命令的同一目录中

In Windows
compile: 
javac -cp .;mysql_driver_jar SimpleDataSource.java
javac StudentRegistrar.java

run:
java -cp .;mysql_driver_jar StudentRegistrar DB.properties

In Unix
Compile:
javac -cp .:mysql_driver_jar SimpleDataSource.java
javac StudentRegistrar.java

run:
java -cp .:mysql_driver_jar StudentRegistrar DB.properties

哪些错误或异常您获取的程序包名称不区分大小写
java-class驱动程序\u class\u路径:。studentregistrar.studentregistrar DB.properties
这里的问题与连接到数据库完全无关。或者MySQL。不。它在一个包裹里。他的计划很少或根本不起作用。