Java:使用Derby

时间:2016-03-12 03:32:39

标签: java bash classpath derby

显然,这是一个非常常见的问题,但我只是不理解我在网上找到的任何解决方案。似乎我在网上找到的大部分内容都是不完整或不相关的。

我试图从" Java for Dummies中运行一个例子,"第17章,列出17-1(可以找到here,但代码本身不是问题)。

它使用Derby jdbc驱动程序,包含以下字符串:

 org.apache.derby.jdbc.EmbeddedDriver
 jdbc:derby:AccountDatabase;create=true

不幸的是,本书仅描述了如何在Eclipse中使用它。我无法让Eclipse编译任何,因此我尝试使用文本编辑器并通过bash进行编译。 javac不会抛出任何错误,但java会抛出错误

java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

显然,这是非常常见的,我看到列出了许多解决方案,使用-classpath选项将类路径设置为Derby.jar(不确定是否适用于javac或java或两者兼而有之) ),但我找不到这个jar文件实际上是的运气。 (我使用的是Ubuntu,如果相关的话。)

经常引用

This page,但/ usr / local目录中没有任何带有jdk的目录。

我觉得我错过了一些非常基本的东西。

更新:如果我复制我在bash中实际使用的命令可能是最好的。这是我正在使用的剧本,部分基于Bryan Pendleton在下面写的内容:

javac -cp derbyrun.jar:. CreateTable.java
java -cp derbyrun.jar:. CreateTable

这就是抛出" ClassNotFoundException。"

此外,如果它是相关的,"定位derbyrun"没有回报。

2 个答案:

答案 0 :(得分:1)

EmbeddedDriver位于derby.jar,因此只需将derby.jar放入CLASSPATH。

Derby有许多罐子,用于各种不同的配置(嵌入式,客户端 - 服务器,命令行工具,网络服务器等)。由于记住哪个罐子与哪个配置一起使用常常令人困惑,因此有一个名为derbyrun.jar的伞状文件,将derbyrun.jar放入CLASSPATH,它将包含所有这些配置的罐子,所以你不必来回交换你的CLASSPATH。

有关Derby基本方面的替代教程,请尝试:https://db.apache.org/derby/docs/10.12/getstart/

答案 1 :(得分:1)

我终于能够找到解决方案,值得注意的是,布莱恩的回答确实有所帮助。

我能够使用Linux的Catfish搜索程序找到derby.jar文件(Caja的搜索功能无法找到它,所以我知道不再使用它了)。它位于/ usr / share / java目录中。这些是我在bash脚本中放入的命令,它没有抛出任何错误并创建了数据库:

javac CreateTable.java
java -cp /usr/share/java/derby.jar:. CreateTable

我猜测对于我想要分享的程序,我想在jar文件中包含derby.jar。当我来到它时,我将穿过那座桥 - 现在,我只是想知道如何使用类路径。