我正在尝试创建一个关于所需库的“自包含”的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&amp; password =
我认为这是因为无法找到jar中的com.mysql.jdbc
包。为什么是这样?当我将 Class-Path 设置为.
时,jar应该不能找到该jar中的所有类吗?
我在反编译器中打开了jar,所有的类都是他们需要的地方,请看这里:
这里出了什么问题?我的MANIFEST看起来像这样:
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: .
答案 0 :(得分:0)
我认为你应该完全避免设置类路径,因为你将所有内容打包在uber-jar中 - 它应该可以工作。
答案 1 :(得分:0)
如果要将它们包含在空格中,则必须显式写入jar的名称。否则,我建议您只需启动jar并手动将类路径作为参数提供:
java -cp . -jar ServerApplication.jar
答案 2 :(得分:0)
也许你可以试试优秀的eclipse插件fatjar。 它已多次使用它来包含基于Java Swing的应用程序的所有依赖项。