Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未将Log4j添加到Ant中的类路径_Java_Ant_Jar_Log4j - Fatal编程技术网

Java 未将Log4j添加到Ant中的类路径

Java 未将Log4j添加到Ant中的类路径,java,ant,jar,log4j,Java,Ant,Jar,Log4j,我试图在Ant中将Log4j添加到我的项目的类路径中,该类路径创建了一个可执行的JAR,但它似乎没有被正确添加 下面是我的Ant构建脚本的路径组件: <path id="classpath.compile"> <fileset dir="${dir.myLibs}"> <include name="**/*.jar"/> </fileset> <pathelement location="${dir.webContent}

我试图在Ant中将Log4j添加到我的项目的类路径中,该类路径创建了一个可执行的JAR,但它似乎没有被正确添加

下面是我的Ant构建脚本的
路径
组件:

<path id="classpath.compile">
  <fileset dir="${dir.myLibs}">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="${dir.webContent}/WEB-INF/lib/log4j.jar" />
</path>
JAR已经创建,但当我执行它时,我得到:

线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/log4j/Logger…


关于我做错了什么,你有什么想法吗?

我猜你运行的Java程序如下

java -jar myapp.jar

在这种情况下,需要在清单中指定类路径属性。我建议您也检查一下manifestclasspath任务

创建jar时不包括jar中的链接库。为了以这种方式运行,您必须在执行类路径中包含所需的JAR。或者,您可以使用我使用的解决方案,即创建归档。它为您的应用程序添加了一个专门的类加载器,并将您所需的jar打包到最终的可执行jar中。它非常适合部署整洁、易于使用的包。

从清单中的类路径可以看出,您正在尝试引用jar中的jar。只有两种方法可以使它在aik中工作:1)一个特殊的类加载器,如@infosec812提到的;2)将jar依赖项直接分解到jar的根中。这两种方法都是可行的,但我看不到它们在您的ant脚本中发生


如果您试图引用jar之外的jar,那么您的相对类路径是相对于您正在执行的jar的位置的。确保引用的jar存在于该位置。

是MANIFEST.MF或运行时命令行的classpath声明中的log4j路径吗?@highlycaffinated:我已经在上面添加了MANIFEST.MF。
<target name="-createJar" >
  <jar jarfile="${path.jarFile}"
     manifest="${dir.source}\META-INF\MANIFEST.MF">
    <fileset dir="${dir.binaries}" casesensitive="yes">
      <exclude name="**/*.java"/>
    </fileset>
  </jar>
</target>
Manifest-Version: 1.0
Class-Path: ../../../WebContent/WEB-INF/lib/log4j.jar (what is this pathing relative to?)
Main-Class: foo.Bar
java -jar myapp.jar