gpt4 book ai didi

java - jar 文件的 ANT 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:17 25 4
gpt4 key购买 nike

我在生成工作 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

有人知道我做错了什么吗?非常感谢。乍得

最佳答案

@chadneal: Also if I unzip the jar file that is produced the contents look like this:

META-INF/
META-INF/MANIFEST.MF
FecruDBreset.class
sqljdbc4.jar

主 Jar 不能包含sqljdbc4.jar。相反,应该将对该 Jar 的引用添加到 list 中的类路径。

关于java - jar 文件的 ANT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com