Java: 使用 Derby 设置类路径

Java: Setting up classpath with 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."

此外,如果它是相关的,"locate derbyrun" returns 没什么。

EmbeddedDriver 在 derby.jar 中找到,因此只需将 derby.jar 放入您的 CLASSPATH。

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

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

我终于找到了解决方案,值得注意的是 Bryan 的回答确实有帮助。

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

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

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