当前位置: 技术问答>java相关
为什么多了一句package程序运行差别那么大(高手请进)
来源: 互联网 发布时间:2015-03-21
本文导语: 我下载了Oracle8i的JDBC Driver 文件为classes12.zip, 并存放在目录:C:jdk13lib下。 在系统环境参数设定 CLASSPATH = .; C:jdk13libclasses12.zip (以上设定都事按照Oracle提供的文档设的) 下面两个程序,第一个正确执行,第二个编...
我下载了Oracle8i的JDBC Driver 文件为classes12.zip, 并存放在目录:C:jdk13lib下。
在系统环境参数设定 CLASSPATH = .; C:jdk13libclasses12.zip
(以上设定都事按照Oracle提供的文档设的)
下面两个程序,第一个正确执行,第二个编译通过,但执行错误。两个程序的区别只是第二个多了一句package svcs; 问题就在“包”上,我不知道如何引用,请指教!thx.
#################
### 程序 1 : ###
################
import java.sql.*;
public class Employee {
public static void main (String args []) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
System.out .println("ClassNotFoundException: --- "+e.getMessage());
}
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.111.10.23:1521:orcl","svcs", "suntek");
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("select appl_no,username from acc_user");
while (rset.next())
System.out.println (rset.getString (1)+" | "+rset.getString("username"));
}
}
#################
### 程序 2 :###
#################
package svcs; // 区别就在这里
import java.sql.*;
public class Employee {
public static void main (String args []) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
System.out .println("ClassNotFoundException: --- "+e.getMessage());
}
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.111.10.23:1521:orcl","svcs", "suntek");
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("select appl_no,username from acc_user");
while (rset.next())
System.out.println (rset.getString (1)+" | "+rset.getString("username"));
}
}
/****** 运行情况 **************************
程序 1 正确列出数据库信息
程序 2 给出一下错误,我应该如何处理??
Exception in thread "main" java.lang.NoClassDefFoundError: Employee (wron
test/Employee)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
在系统环境参数设定 CLASSPATH = .; C:jdk13libclasses12.zip
(以上设定都事按照Oracle提供的文档设的)
下面两个程序,第一个正确执行,第二个编译通过,但执行错误。两个程序的区别只是第二个多了一句package svcs; 问题就在“包”上,我不知道如何引用,请指教!thx.
#################
### 程序 1 : ###
################
import java.sql.*;
public class Employee {
public static void main (String args []) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
System.out .println("ClassNotFoundException: --- "+e.getMessage());
}
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.111.10.23:1521:orcl","svcs", "suntek");
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("select appl_no,username from acc_user");
while (rset.next())
System.out.println (rset.getString (1)+" | "+rset.getString("username"));
}
}
#################
### 程序 2 :###
#################
package svcs; // 区别就在这里
import java.sql.*;
public class Employee {
public static void main (String args []) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
System.out .println("ClassNotFoundException: --- "+e.getMessage());
}
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.111.10.23:1521:orcl","svcs", "suntek");
Statement stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("select appl_no,username from acc_user");
while (rset.next())
System.out.println (rset.getString (1)+" | "+rset.getString("username"));
}
}
/****** 运行情况 **************************
程序 1 正确列出数据库信息
程序 2 给出一下错误,我应该如何处理??
Exception in thread "main" java.lang.NoClassDefFoundError: Employee (wron
test/Employee)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
|
java.lang.NoClassDefFoundError--->
你的IDE开发环境的工程路径设置可能有问题!
他按照你指定的路径找不着类!
如果你没有用IDE开发环境,那么你运行的时候可以试着这样写文件名:包名.类名,
或者在包目录路的上一级运行!
你的IDE开发环境的工程路径设置可能有问题!
他按照你指定的路径找不着类!
如果你没有用IDE开发环境,那么你运行的时候可以试着这样写文件名:包名.类名,
或者在包目录路的上一级运行!
|
加了“package svcs;”以后,运行的时候该到svcs的上级目录
然后运行:java svcs.Employee
然后运行:java svcs.Employee
|
如果使用package的话,最好使用-d选项,如:
javac -d . Employee.java
就会在当前目录下根据package信息创建相应的目录(svcs)。
执行时加上包名就好了。
java svcs.Employee
javac -d . Employee.java
就会在当前目录下根据package信息创建相应的目录(svcs)。
执行时加上包名就好了。
java svcs.Employee