2012-11-30 46 views
1

我创建了一个build.xml来编译我的源文件并创建一个jar。当我运行构建JAR被创建,但罐子以下情况例外为构建jar创建异常

[java] Exception in thread "main" java.lang.NoClassDefFoundError: com/mysql 
/jdbc/exceptions/MySQLIntegrityConstraintViolationException 

构建文件是运行:

<?xml version="1.0"?> 
<project name="NmzAzzist" basedir="." default="main"> 
    <property name="src.dir" value="../Source/NMSAzzist/src" /> 
    <property name="build.dir" value="ReleaseBuild/classes" /> 
    <property name="jar.dir" value="ReleaseBuild/ReleaseJars" /> 

    <path id="master-classpath"> 
     <fileset dir="Libraries"> 
      <include name="*.jar" /> 
     </fileset> 

    </path> 

    <patternset id="meta.files"> 
     <include name="**/*.xml" /> 
     <include name="**/*.properties" /> 
     <include name="**/*.mib" /> 
    </patternset> 

    <!-- Simply extends the compile.classpath with your own compiled classes. --> 

    <target name="clean" description="Clean output directories"> 
     <delete dir="${build.dir}" /> 
    </target> 

    <target name="build" description="Compile source tree java files"> 
     <echo>Compiling the source code</echo> 
     <mkdir dir="${build.dir}" /> 
     <javac destdir="${build.dir}" source="1.5" target="1.5" 
      includeantruntime="false"> 
      <src path="${src.dir}" /> 
      <classpath refid="master-classpath" /> 
     </javac> 
    </target> 

    <target name="copy.meta.files"> 
     <copy todir="${build.dir}"> 
      <fileset dir="${src.dir}"> 
       <patternset refid="meta.files" /> 
      </fileset> 
     </copy> 
    </target> 

    <target name="jar" depends="build, copy.meta.files"> 
     <mkdir dir="${jar.dir}" /> 
     <echo>building jar!</echo> 
     <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}"> 
      <manifest> 
       <attribute name="Main-Class" 
        value="com.ushustech.nmsazzist.NMSAzzistApp" /> 
      </manifest> 
     </jar> 
    </target> 

    <target name="run" depends="jar"> 
     <java jar="${jar.dir}/${ant.project.name}.jar" fork="true" /> 
    </target> 
    <target name="main" depends="clean,run" /> 


</project> 

我该如何解决这个问题?

回答

1

上面提到的错误是java错误,而不是jar错误。在您的类路径中,您没有包含mysql-connector-java-5.1。*。jar,这会导致脚本失败。

编译时存在类时会遇到NoClassDefFoundException,但在执行时不会被应用程序找到。

更改java的任务,包括类路径裁判也...希望这将工作

<java jar="${jar.dir}/${ant.project.name}.jar" fork="true" classpathref="master-classpath"/> 
+0

这并不解决问题。创建jar时会发生同样的异常。 – Gapchoos

+0

你能告诉我在类路径中指定的文件夹中的jar名称吗? – Vishal

+0

它包括用于mysql,Snmp4j和其他外部罐子的jar。这些罐子包含在ReleaseBuild/Libraries文件夹中 – Gapchoos