我在哪里放置我的sqlite db文件,以便我的jar可以访问它?这对连接字符串有何影响?

时间:2015-03-23 03:14:08

标签: java ant sqlite

我正在使用Ant来构建和运行我的简单java程序,但是我的文件层次结构应该如何布局,以便程序可以访问和修改sqlite db文件。

我听说我不能在jar中包含db文件,因为这会导致它变为只读。我唯一的另一个猜测是把它放在相对于jar文件的某个地方(最好是同一个目录?)但是我不知道该怎样做我的ant build.xml文件以反映当我执行'ant run'时,也不是我确定这如何修改jdbc连接字符串。

我当前的jdbc连接代码:

logger.debug("Setting up database connection");
Class.forName("org.sqlite.JDBC");
dbConnection = DriverManager.getConnection("jdbc:sqlite:images.db");

我的ant build.xml

<project name="Maower" basedir="." default="main">
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="jar.dir" value="${build.dir}/jar"/>
    <property name="lib.dir" value="lib"/>
    <property name="log.dir" value="log"/>

    <property name="main-class" value="good.maower.Maower"/>

    <path id="classpath">
        <fileset dir="${lib.dir}" includes="**/*.jar"/>
        <fileset dir="${src.dir}" includes="**/*.properties"/>
    </path>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false"/>
        <copy todir="${classes.dir}" overwrite="true">
            <fileset dir="${src.dir}" includes="**/*.properties"/>
        </copy>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
        </jar>
    </target>

    <target name="run" depends="jar, input-runargs">
        <java fork="true" classname="${main-class}">
            <classpath>
                <path refid="classpath"/>
                <path location="${jar.dir}/${ant.project.name}.jar"/>
            </classpath>
            <arg line="${args}"/>
        </java>
    </target>

    <target name="input-runargs" unless="args" description="Ensures that subscriber email addresses are specified in command line arguments">
        <input addProperty="args" message="List subscribers: "/>
    </target>

    <target name="clean-build" depends="clean,jar"/>

    <target name="main" depends="clean,jar"/>

</project>

0 个答案:

没有答案