我通过Intellij的项目结构(模块,库)将必要的JDBC jar文件打包到DB.jar中
当我从IntelliJ中执行应用程序时,它成功运行
答案 0 :(得分:0)
可执行jar中的jar通常不在类路径中。
您可以将它们放在与DB.jar相同的文件夹中并执行:
java -cp DB.jar;ojdbc6.jar;ojdbc14.jar <MainClass goes here>
那应该运行它。
您还可以将Class-Path
条目放在jar中的Manifest.MF文件中,以引用相对于计算机文件系统中DB.jar位置的其他jar。引用另外两个jar文件,然后你可以java -jar DB.jar <MainClass goes here>
(假设两个罐子在正确的位置。
关于不能做你想做的事情(以及许多其他人多年来想要做的事情)的一般挫折感有一些讨论here。
Classpath including JAR within a JAR
解释主类
从命令行运行java应用程序时,会有一些执行开始的类。它看起来像这样:
package com.mycompany.app;
public class StartHere {
public static void main(String[] args) {
// Your code goes here ...
}
}
如果此示例是应用程序启动的类,则可以使用命令行启动它。这假设您在类路径的jar中的正确包位置中具有StartHere类:
java -cp DB.jar;ojdbc6.jar;ojdbc14.jar com.mycompany.app.StartHere
请注意,这允许您在同一个jar中拥有多个应用程序。只需使用main()
方法创建多个类,然后使用命令行中显示的不同起始类运行它们。