未找到javac主类的Ant编译



我已经在这里搜索了一个解决方案,但没有一个适合我:我有一个用Ant编写的构建脚本:

<project name="Musifx" basedir="." default="main">
<property name="src.dir" value="src"/>
<property name="build.dir" value="out"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="properties.file" value="${src.dir}/qs_musifx.properties"/>
<property name="lib.dir" value="lib"/>
<property name="main-class" value="quakk.musifx.main.Main"/>
<target name="clean">
  <delete dir="${build.dir}"/>
</target>
<target name="compile">
  <mkdir dir="${classes.dir}"/>
  <javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpath="${lib.dir}/Logger.jar" includes="${lib.dir}/*.jar"/>
  <copy todir="${classes.dir}">
    <fileset dir="${src.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 classname="${main-class}" fork="true"/>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>
</project>

我的文件夹结构是。/quakk/musifx/main/,我的包是quakk.musifx.main

正如我所说,我尝试了各种解决方案张贴在这里,但每次我试图运行我的"主要"目标在蚂蚁我得到以下错误

Fehler: Hauptklasse quakk.musifx.main.Main konnte nicht gefunden oder geladen werden

大致翻译为Mainclass: quake .musifx.main. main. main无法找到或加载

我还试图改变类路径或主类的名称,并试图将我的主类属性更改为简单的"Main"或"quake .musifx. Main"。或者在编译目标中包含类路径,但对我来说都不起作用。

顺便说一下,我使用的是JDK 8,这是一个JavaFX应用程序

编辑:jar tvf Musifx.jar的输出

0 Thu Jul 30 00:00:00 CEST 2015 META-INF/
139 Wed Jul 29 23:59:58 CEST 2015 META-INF/MANIFEST.MF
0 Wed Jul 29 23:59:58 CEST 2015 quakk/
0 Wed Jul 29 23:59:58 CEST 2015 quakk/musifx/
0 Wed Jul 29 23:59:58 CEST 2015 quakk/musifx/main/
425 Wed Jul 29 23:59:58 CEST 2015 qs_musifx.properties
1866 Wed Jul 29 23:59:58 CEST 2015 quakk/musifx/main/main.fxml
1076 Wed Jul 29 23:59:58 CEST 2015 quakk/musifx/main/styles.css

我只需要更改compilejar的目标:

<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}">
    <classpath>
        <pathelement path="${lib.dir}/Logger.jar"/>
    </classpath>
</javac>
<copy todir="${classes.dir}">
  <fileset dir="${src.dir}" excludes="**/*.java"/>
</copy>
</target>

jar目标

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

现在它工作了,并编译到我的jar文件中,应用程序正常工作

您试图在不提供类路径的情况下运行主类。

我建议改成:

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

,它将运行您刚刚构建的JAR(因为它在其清单中确实有一个Main-Class),将运行它。

相关内容

  • 没有找到相关文章

最新更新