0

我创建了一个将连接到 oracle 数据库的类,它具有三个简单的函数connect()executeStatement()disconnect()。这个类需要一个 oracle “瘦” JDBC Jar 才能工作,因此它是“引用库”的一部分。

我现在要做的是将上面提到的类导出为 JAR 文件,以便其他程序可以使用它。但是,当我尝试这样做时,我会遇到以下问题。

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/driver/OracleDriver
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

我可以使用什么方法来制作它,以便 MY Jar 文件与 oracle Jar 文件一起使用?

4

4 回答 4

2

为了从多个 jar 中加载类,java 使用所谓的classpath。这是一个 jar 列表,也是与 jar 内容具有相同结构的目录。

此列表由以下参数java定义-cp。请参阅文档,例如此处。

java -cp jar1.jar;jar2.jar com.my.Class

或者

java -cp jar1.jar;jar2.jar -jar main.jar

此外,您可以研究 MANIFEST.MF 可以列出它的依赖 jar。

于 2013-01-14T19:18:22.673 回答
1

您必须将程序(包括您的代码)所需的所有 jar 添加到类路径中。例如:

java -cp jar1.jar;jar2.jar com.my.Class

类路径定义了 JVM 在加载代码时将在哪里查找代码。这是一个关于从命令行运行 Java 程序的快速而简单的教程:

http://www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/

于 2013-01-14T19:22:10.813 回答
0

如果您的意思是您希望您的 jar 文件完全自包含并且没有暴露给客户端代码的依赖项,那么您可以尝试Jar Jar Links,它将重命名依赖项并将它们包含在您的 jar 中。

在这个类似问题的答案中提到了其他可能性。

于 2013-01-14T19:24:17.237 回答
0

看看这个答案:是否可以创建一个包含项目类和项目依赖项的“uber”jar 作为带有自定义清单文件的 jar?

你也可以谷歌搜索“uberjar”。这描述了如何创建一个包含所有嵌入类的 jar。

您仍然可以使用类路径:

java -cp jar1.jar;jar2.jar com.my.Class
于 2013-01-14T19:23:13.760 回答