2016-02-18 2 views
0

Я бегу в Ant-скрипт для создания файла JAR, но когда я в JAR Выполнение выражений файла я получаю следующее сообщение об ошибке:java.lang.NoClassDefFoundError с JAR генерироваться с ANT

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 
     at mx.isban.csd.ws.Main.<clinit>(Main.java:31) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 1 more 

это мой муравей скрипт:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="WSCargaLlavesClient" default="build" basedir=".."> 
    <description>Build File</description> 

    <property name="app.jar.cli" value="${ant.project.name}.jar" /> 
    <property name="dir.src.cli" value="${basedir}/${app.jar.cli}"/> 
    <property name="dir.build"  value="${basedir}/build"/> 
    <property name="dir.lib"  value="${basedir}/lib"/> 
    <property name="classes.dir" value="${dir.build}/classes"/> 


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

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

    <target name="compila-client"> 
    <mkdir dir="${dir.lib}"/> 
    <mkdir dir="${dir.build}"/> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${dir.src.cli}" debug="on" destdir="${classes.dir}" 
      classpathref="classpath" includeantruntime="false" 
      source="1.6" target="1.6"/> 
    </target> 

    <target name="build" depends="compila-client"> 
    <jar destfile="${dir.build}/${app.jar.cli}" basedir="${classes.dir}"> 
     <manifest> 
     <attribute name="Class-Path" value="lib/commons-beanutils.jar lib/commons-codec-1.8.jar lib/commons-io-1.4.jar lib/commons-lang.jar lib/commons-logging.jar lib/ezmorph-1.0.2.jar lib/json-lib-1.1.jar lib/log4j-1.2.17.jar" /> 
     <attribute name="Main-Class" value="mx.isban.csd.ws.Main"/> 
     </manifest> 
     <fileset dir="." includes="lib\*"/> 
    </jar> 
    </target> 

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

</project> 

Я уже открыл мой манифест, и я нашел файл log4j-1.2.17.jar

enter image description here

Я также проверил мой файл MANIFEST.MF и там: enter image description here

Когда я генерировать файл Runnable JAR с затмением он работает просто отлично, это ANT скрипт генерируется затмение:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="create_run_jar" name="Create Runnable Jar for Project WSCargaLlavesClient with Jar-in-Jar Loader"> 
    <!--this file was created by Eclipse Runnable JAR file Export Wizard--> 
    <!--ANT 1.7 is required--> 
    <!--define folder properties--> 
    <property name="dir.buildfile" value="."/> 
    <property name="dir.workspace" value="C:/Users/Jesus Ayala/developer/workspace/WSCargaLlavesClient"/> 
    <property name="dir.jarfile" value="${dir.buildfile}"/> 
    <target name="create_run_jar"> 
     <jar destfile="${dir.jarfile}/WSCargaLlavesClient.jar"> 
      <manifest> 
       <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/> 
       <attribute name="Rsrc-Main-Class" value="mx.isban.csd.ws.Main"/> 
       <attribute name="Class-Path" value="."/> 
       <attribute name="Rsrc-Class-Path" value="./ commons-beanutils.jar commons-codec-1.8.jar commons-io-1.4.jar commons-lang.jar commons-logging.jar ezmorph-1.0.2.jar json-lib-1.1.jar log4j-1.2.17.jar"/> 
      </manifest> 
      <zipfileset src="jar-in-jar-loader.zip"/> 
      <fileset dir="${dir.workspace}/WSCargaLlavesClient/bin"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="commons-beanutils.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="commons-codec-1.8.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="commons-io-1.4.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="commons-lang.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="commons-logging.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="ezmorph-1.0.2.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="json-lib-1.1.jar"/> 
      <zipfileset dir="C:/REPO/SellosDigitales-Des/src/java/WSCargaLlavesClient/lib" includes="log4j-1.2.17.jar"/> 
     </jar> 
    </target> 
</project> 

Любая помощь, чтобы мой скрипт ANT создавал правильный JAR-файл, я буду благодарен

ответ

0

Вам нужно иметь log4j jar под classpath ie lib folder. Если он уже есть, то путь к классам не установлено правильно

Попробуйте просто

<attribute name="Class-Path" value="lib" /> 
+0

Я просто попытался это, но получить ту же ошибку, у меня есть log4j-1.2.17.jar внутри Lib папки, и когда я произвожу баночку файл, он копируется внутри правильно, файл манифеста говорит следующее: Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.6 Создано-By: 1.8.0_60-b27 (Oracle Corporation) Main- Класс: mx.isban.csd.ws.Main Class-Path: lib –

Смежные вопросы