【发布时间】:2011-06-21 19:09:11
【问题描述】:
我在生成工作 jar 文件时遇到问题。我想最终得到一个可以通过使用命令 java -jar myjar.jar 自行运行的 jar 文件
目前为止
<project default="jar" name="Create Runnable Jar fecrudbreset">
<target name="clean">
<delete dir="bin"/>
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="./build"/>
<javac srcdir="./src" destdir="./build">
<classpath>
<pathelement location="./lib/sqljdbc4.jar"/>
</classpath>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="./bin"/>
<jar destfile="./bin/fecrudbreset.jar" >
<manifest>
<attribute name="Main-Class" value="FecruDBreset"/>
<attribute name="Class-Path" value="."/>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
<fileset dir="./build"/>
<zipfileset dir="./lib" includes="sqljdbc4.jar"/>
</jar>
</target>
</project>
编译工作,但是当我尝试运行应用程序时,我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerDataSource
at FecruDBreset.main(Unknown Source)
更新: 我拥有的主类使用默认包。该类已找到并开始运行,但当它找不到似乎的 sql 驱动程序时失败。我想我不明白为什么它找不到它。
下面是主类的定义:
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
public class FecruDBreset
{
/*
* Used to reset / nuke fecru database
*/
public static void main(String[] args)
{
另外,如果我解压缩生成的 jar 文件,内容如下所示:
META-INF/
META-INF/MANIFEST.MF
FecruDBreset.class
sqljdbc4.jar
更新 2:我的源代码树如下所示:
|-- bin
| `-- fecrudbreset.jar
|-- build
| `-- FecruDBreset.class
|-- build.xml
|-- lib
| `-- sqljdbc4.jar
|-- readme.txt
`-- src
`-- FecruDBreset.java
有人知道我做错了什么吗?提前非常感谢。 乍得
【问题讨论】:
-
您如何尝试运行该应用程序?
-
当你运行它时,你需要在类路径中有 sqljdbc4.jar