我正在尝试创建一个关于它需要的库的“自包含”的 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>
但是,当我尝试使用启动应用程序时
> java -jar ServerApplication.jar
我收到一个错误
找不到适合 jdbc 的驱动程序:mysql://localhost/db?user=root&password=
我认为这是因为com.mysql.jdbc
找不到 jar 内的包。为什么是这样?当我将Class-Path设置为 时.
,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: .