我有一个使用sqljdbc4.jar连接到SQL Server 2008数据库的GUI应用程序。如果我从命令行运行它,它可以很好地工作。
但是,一旦我将其包装到可执行的JAR中,我就会收到“找不到适合jdbc的驱动程序:sqlserver:// myServer:1433; databaseName = myDb”错误。我知道我的Windows系统CLASSPATH在JAR中被忽略了,但我无法弄清楚在可执行JAR中包含sqljdbc4.jar并获得一个可移植的应用程序。
我最近解决这个问题的尝试如下:
我的MANIFEST.MF文件:
Manifest-Version: 1.0
Class-Path: lib/sqljdbc4.jar
Created-By: 1.7.0_11 (Oracle Corporation)
Main-Class: MyApp
我用来编译JAR的命令:
jar cmf MANIFEST.MF MyApp.jar MyApp.class help.html lib
我的目录结构如下。我在MyApp目录中运行jar
命令。
+ MyApp
+ lib
- sqljdbc.jar
- help.html
- MANIFEST.MF
- MyApp.class
- MyApp.java
当我创建JAR并在MyApp目录中运行它时,它可以正常工作。一旦我将其拉出目录,我就会收到错误消息。如何让JAR访问内部可用的sqljdbc.jar?
提前致谢。
答案 0 :(得分:1)
如果您有一个可执行jar MyApp.jar
,其中包含manifest.mf中的条目:
Class-Path: lib/sqljdbc4.jar
这意味着jar对(相对)文件夹sqljdbc4.jar
中的lib
具有外部依赖关系。它不包含在您创建的jar中!所以你需要确保在执行它时有一个lib
- 相对于该jar包含sqljdbc4.jar
的文件夹。所以执行时的文件夹结构需要;
+ (a folder)
+ lib
- sqljdbc.jar
- MyApp.jar