Java 带有组合库的jar文件中的类路径

Java 带有组合库的jar文件中的类路径,java,jar,classpath,Java,Jar,Classpath,我正在尝试创建一个jar文件,该文件与它所需的库有关,是“自包含的” 因此,我创建了以下ant文件: <project name="srv" default="prod"> <target name="prod"> <jar destfile="build/ServerApplication.jar" basedir="bin/"> <restrict> <name n

我正在尝试创建一个jar文件,该文件与它所需的库有关,是“自包含的”

因此,我创建了以下ant文件:

<project name="srv" default="prod">
    <target name="prod">
        <jar destfile="build/ServerApplication.jar" basedir="bin/">
            <restrict>
             <name name="**/*.class"/>
             <archives>
               <zips>
                 <fileset dir="lib/" includes="**/*.jar"/>
               </zips>
             </archives>
            </restrict>
            <manifest>
                <attribute name="Class-Path" value="." />
                <attribute name="Main-Class" value="my.package.ServerApplication" />
            </manifest>
        </jar>
    </target>
</project>
我犯了一个错误

未找到适合jdbc的驱动程序:mysql://localhost/db?user=root&password=

我估计这是因为在jar中找不到
com.mysql.jdbc
包。为什么会这样?当我将类路径设置为
时,jar不应该能够找到该jar中的所有类吗

我在反编译器中打开了jar,所有的类都在它们需要的地方,请参见这里:

这里出了什么问题?我的清单如下所示:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_07-b10 (Oracle Corporation)
Main-Class: my.package.ServerApplication
Class-Path: .

我认为您应该完全避免设置类路径,而且由于您正在将所有内容打包到uber jar中,它应该可以工作。

如果您希望将jar的名称以空格分隔,则必须显式写入。否则,我建议您只需启动jar并手动提供类路径作为参数:

java -cp . -jar ServerApplication.jar

也许你可以试试优秀的eclipse插件,它是。 它曾多次使用它来包含基于Java Swing的应用程序的所有依赖项。

可能重复的
java -cp . -jar ServerApplication.jar