Java 为什么司机仍然失踪?
我正在尝试将Java DB用于仅应用程序存储 环境变量: 没有对eclipse配置进行任何更改,我无法将其包含到构建路径中(不知何故,它将被视为第三方库,这是不允许的) 当我在cmd中键入“sysinfo”时,它会告诉我数据库已安装,并列出包和其他信息 代码:Java 为什么司机仍然失踪?,java,derby,classnotfoundexception,Java,Derby,Classnotfoundexception,我正在尝试将Java DB用于仅应用程序存储 环境变量: 没有对eclipse配置进行任何更改,我无法将其包含到构建路径中(不知何故,它将被视为第三方库,这是不允许的) 当我在cmd中键入“sysinfo”时,它会告诉我数据库已安装,并列出包和其他信息 代码: 还包括derbytools.jar和derbyclient.jar。参考文档,如果运行SampleApp,您会遇到java.lang.ClassNotFoundException:org.apache.derby.jdbc.Embedde
还包括derbytools.jar和derbyclient.jar。参考文档,如果运行SampleApp,您会遇到
java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver
,那么需要做两件事
正如您所说,您检查了sysinfo,我将尝试添加derby.jar
和derbytools.jar
,即使这些工具是可选的
或者您可以将SampleApp与您的应用程序进行比较……尝试放置
System.out.println(System.getProperty(“java.class.path”)代码>
在Class.forName(…).newInstance()之前
输出必须包含指向derby.jar的有效路径 可能重复我读过,尝试过,但无法解决问题对于几乎所有类型的应用程序,环境变量CLASS\u PATH
被忽略。注意:%JAVA\u HOME%\jre\lib
不是类路径上的有效条目。首先,Java将自动添加它(因此实际上不需要指定它),其次,这不会将该文件夹中的JAR添加到类路径中。相反,它只是将整个文件夹添加为类路径资源(因此您现在可以加载rt.jar
,但不能加载其中的代码),我看到它是通过main方法运行的。不应忽略CLASSPATH环境变量。您是从命令行运行它吗?运行前是否在命令行上设置变量?若要在命令行上设置变量,请不要在derby home之前设置类路径。还可以尝试用双引号中的空格括起路径。还尝试将classpath指定为一个java选项-java-cp“yourdriverjarpath”;otherjar.jar;您的classesdir main根据,derby.jar
应该足够了。
CLASSPATH:
%JAVA_HOME%\jre\lib;%DERBY_HOME%\lib\derby.jar
DERBY_HOME:
C:\Program Files\Java\jdk1.7.0_25\db
Path:
%DERBY_HOME%\bin
public class Main {
private static String dbURL = "jdbc:derby:AssertDB;user=me;password=mine;create=true";
private static Connection con = null;
public static void main(String[] args) {
setDBSystemDir();
createConnection();
CookiesTable pTable = new CookiesTable(con);
try {
pTable.createTable();
pTable.populateTable();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
// load files
// parse files to tables
// retrive SQL statment
// print result
}
private static void setDBSystemDir() {
// Decide on the db system directory: <userhome>/.addressbook/
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.asertdb";
// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
}
private static void createConnection() {
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
// Get a connection
con = DriverManager.getConnection(dbURL);
} catch (Exception except) {
System.out.println("DRIVER DRROOOOOP");
except.printStackTrace();
}
}
}
java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.tuto.p4.Main.createConnection(Main.java:44)
at com.tuto.p4.Main.main(Main.java:13)
Exception in thread "main" java.lang.NullPointerException
at com.tuto.p4.CookiesTable.createTable(CookiesTable.java:29)
at com.tuto.p4.Main.main(Main.java:16)