使用外部JDBC Jar文件进行JavaFX部署

时间:2015-01-08 11:41:04

标签: jdbc deployment ant classpath javafx-8

让我首先说,编译代码库时一切正常,我可以连接到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进行以下设置:

在工具下 - >选项I在Java Ant选项卡下列出了这个:

C:\Users\Zermatt\Documents\NetBeansProjects\myProject\src\myProject\Microsoft\sqljdbc41.jar

Netbeans for myProject 的项目标签下,我有:

在“库文件夹”下

 --> 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-COMMENT:Main-Class将由build

自动添加

夹在目标标记和(fx deploy)标记之间,我终于找到了如何使用(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>

但我仍然像以前一样得到同样的例外!那我该怎么做?求救!

1 个答案:

答案 0 :(得分:0)

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

此链接可以为您提供帮助:http://javarevisited.blogspot.in/2012/10/5-ways-to-add-multiple-jar-to-classpath-java.html