У меня проблема с созданием рабочего файла JAR.Я хотел бы получить файл jar, который может запускаться сам с помощью команды java -jar myjar.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)
update: основной класс, который у меня есть, использует пакет по умолчанию.Класс найден и начинает работать, но завершается ошибкой, когда кажется, что он не может найти драйвер 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
Кто-нибудь знает, что я делаю неправильно?Большое спасибо заранее.Чад