gpt4 book ai didi

java - Apache Ant java.lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-30 11:30:17 24 4
gpt4 key购买 nike

可能的答案 Stack Over flow question

我的问题与上述线程中描述的相同。我已经完成了解决方案,但它不起作用。ant compile 完美运行。 ant jar 说无法加载主类

Exception in thread "main" java.lang.NoClassDefFoundError: LoadServer (wrong name: org/module/loader/LoadServer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我在命令行做了以下操作

JAVA_HOME="/usr/local/java/jdk1.7.0_21"
ANT_HOME="/usr/share/ant/"
PATH="$ANT_HOME/bin:$PATH"

此外,如果我启动一个新终端并键入 echo$JAVA_HOME,它会显示上述结果,但 echo$ANT_HOME 会给出 null。

here is a screen shot

初始错误

     <project name="Raxa-4" basedir="." default="main">

<property name="src.dir" value="src"/>
<property name="prop.dir" value="properties"/>
<property name="resource.dir" value="resource"/>
<property name="lib.dir" value="lib"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="org.raxa.module.loader.LoadServer"/>

<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</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}">
<fileset dir="${resource.dir}" excludes="**/*.java"/>
<fileset dir="${prop.dir}" excludes="**/*.java"/>
</copy>
</target>

<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</jar>
</target>


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

</target>

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

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

</project>

编辑:

    <property name="src.dir"      value="src"/>
<property name="prop.dir" value="properties"/>
<property name="resource.dir" value="resource"/>
<property name="lib.dir" value="lib"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="org.raxa.module.loader.LoadServer"/>

<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</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}">
<fileset dir="${resource.dir}" excludes="**/*.java"/>
<fileset dir="${prop.dir}" excludes="**/*.java"/>
</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">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</target>

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

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

</project>

Ant 运行时出现新错误

运行:

[java] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
[java] at org.raxa.module.scheduler.TimeSetter.<clinit>(Unknown Source)
[java] at org.raxa.module.loader.LoadServer.main(Unknown Source)
[java] Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[java] ... 2 more
[java] Java Result: 1

BUILD FAILED
/home/atul/Documents/workspace2/Raxa-4/build.xml:41: Problem: failed to create task or type classpath
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken pla

最佳答案

也许问题是您的类路径被覆盖了。试试这个:

<java classname="${main-class}" fork="true" >
<classpath>
<path refid="classpath"/>
<pathelement location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</classpath> </java>

关于java - Apache Ant java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17861699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com