我创建了一个连接到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文件?
答案 0 :(得分:2)
要从多个jar加载类,java使用所谓的 classpath 。 这是一个罐子列表,也是与jar内容结构相同的目录。
此列表由java
后-cp
的参数定义。
查看文档,例如这里。
java -cp jar1.jar;jar2.jar com.my.Class
或
java -cp jar1.jar;jar2.jar -jar main.jar
此外,您可以研究MANIFEST.MF,它可以列出它的依赖关系罐。
答案 1 :(得分: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/
答案 2 :(得分:0)
你也可以谷歌搜索“uberjar”。这描述了如何创建一个包含所有嵌入类的jar。
您仍然可以使用类路径:
java -cp jar1.jar;jar2.jar com.my.Class
答案 3 :(得分:0)
如果您的意思是希望您的jar文件完全自包含且没有暴露给客户端代码的依赖项,那么您可以尝试Jar Jar Links,它将重命名依赖项并将它们包含在您的jar中。< / p>
此similar question的答案中提到了其他可能性。