带有外部JDBCJAR文件的JavaFX部署

带有外部JDBCJAR文件的JavaFX部署,jdbc,deployment,ant,classpath,javafx-8,Jdbc,Deployment,Ant,Classpath,Javafx 8,首先,我要说的是,在编译代码库时,一切正常,我可以连接到SQL Server Express 2012数据库。问题是: 当我创建一个windows可执行文件时,即使Sqljdbc41.jar包含在发行版中,也就是说,它位于以下文件夹myProject\app\lib\Sqljdbc41.jar中 我的应用程序似乎找不到这个jar文件来建立连接。我将引发以下异常: 注意:在Netbeans中编译我的代码库时不会出现此异常,它仅在我的应用程序安装在开发计算机上进行安装后测试时才会出现 java.sq

首先,我要说的是,在编译代码库时,一切正常,我可以连接到SQL Server Express 2012数据库。问题是:

当我创建一个windows可执行文件时,即使Sqljdbc41.jar包含在发行版中,也就是说,它位于以下文件夹myProject\app\lib\Sqljdbc41.jar中

我的应用程序似乎找不到这个jar文件来建立连接。我将引发以下异常:

注意:在Netbeans中编译我的代码库时不会出现此异常,它仅在我的应用程序安装在开发计算机上进行安装后测试时才会出现

java.sql.SQLException: No suitable driver 
 found for jdbc:sqlserver://localhost:1433;databaseName=NORTHWND;
我正在使用具有以下设置的Netbeans 8.0.1:

在工具->选项下,我在Java Ant选项卡下列出了:

C:\Users\Zermatt\Documents\NetBeansProjects\myProject\src\myProject\Microsoft\sqljdbc41.jar
在Netbeans for myProject的项目选项卡下,我有:

在Libraries文件夹下

 --> sqljdbc41.jar which is pointing to src/myProject/Microsoft/sqljdbc41.jar under Project Properties --> Library --> Compile tab
在“服务”选项卡下,我甚至做了以下工作:

在数据库树下

 --> Drivers --> Microsoft SQL Server 2012 registered connection to verify connection in my project.
那么,我遗漏了什么或做得不对呢?我想知道我是否可以,或者我是否需要在ANT脚本中明确地提到类路径?这是我第一次使用ANT,所以它仍然是我的学习曲线

下面是我在build.xml文件中使用的ANT脚本:

<fx:deploy width="${javafx.run.width}" height="${javafx.run.height}"

          nativeBundles="EXE"

          outdir="${basedir}/${dist.dir}" outfile="${application.title}">

    <fx:application name="${application.title}"

                    version="1.0.0"

                    mainClass="${javafx.main.class}"

                    preloaderClass="firstPreloader.FirstPreloader"/>

    <fx:permissions elevated="true"/>

    <fx:preferences shortcut="true" menu="true" install="true"/>

    <fx:resources>

        <fx:fileset id="preloader-files" requiredFor="preloader" dir="${basedir}/dist/lib" includes="FirstPreloader.jar"/>

        <fx:fileset dir="${basedir}/${dist.dir}" includes="*.jar"/>

        <fx:fileset dir="${basedir}/${dist.dir}" includes="lib/*.jar"/>

        <fx:fileset os="windows" type="license" includes="license.rtf" dir="${basedir}/src/myProject/package" />

        <fx:fileset os="windows" type="data" includes="config.properties" dir="${basedir}" />

        <fx:fileset dir="build" type="native" os="windows" arch="x64" includes="native-libs-win-x86_64.jar"/>

    </fx:resources>

    <fx:info title="${application.title}"

             vendor="${application.vendor}">

        <fx:icon href="./package/windows/myProject.ico"/>

        <fx:splash href="./package/windows/myProject_Splash.png"/>

    </fx:info>

</fx:deploy>
我承认,我现在正在抓救命稻草,我仍然没有成功,我甚至做了以下几件事:

在清单文件中,我有:

清单版本:1.0 类路径:C:\Users\Zermatt\Documents\NetBeansProjects\myProject\src\myProject\Microsoft\sqljdbc41.jar X注释:主类将由生成自动添加

夹在目标标记和fx部署标记之间,我终于找到了如何使用fx jar标记:

<fx:jar destfile="${basedir}/${dist.dir}/myProject.jar">
    <fx:application name="myProject Application" mainClass="myProject.myProject"/>
        <fx:resources>
            <fx:fileset dir="${basedir}/${dist.dir}" includes="lib/*.jar"/>
        </fx:resources>
        <fx:fileset dir="build/classes"/>
        <manifest>
            <attribute name="Class-Path" value="${basedir}sqljdbc41.jar"/>
        </manifest>
</fx:jar>

但我还是得到了和以前一样的例外!那我该怎么做呢?救命啊

这与Netbeans或项目结构无关。在启动主类之前,需要将SQLJAR文件添加到类路径中

此链接可以帮助您: