我在eclipse中第一次使用ant构建时遇到了一些麻烦,这是我的build.xml构建文件。
<project name="Rutherford" default="dist" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<property name="libs" value="libs"/>
<path id="classpath">
<fileset dir="${libs}" includes="**/*.jar"/>
</path>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}" classpathref="classpath">
<compilerarg line="-encoding utf-8"/>
</javac>
</target>
<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/MyProject-${DSTAMP}.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="nat.rutherford.DesktopStarter"/>
</manifest>
</jar>
</target>
<target name="run">
<java jar="${dist}/MyProject-${DSTAMP}.jar" fork="true"/>
</target>
<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
它编译好没有警告或错误,但当我尝试运行.jar时,它说'找不到主类:nat.rutherford.DesktopStarter。程序现在退出'=(
我已经阅读了大量关于这个问题的网页,但到目前为止还没有结论。
我能够使用Eclipse编译它 - &gt;档案 - &gt;导出 - &gt; Java - &gt; Runnable Jar文件。但我使用一些UTF-8编码的.txt文件似乎无法以这种方式处理,我需要它们!即我有希腊字符应该读...dσ/dΩ...但目前读...dÃ/ d©...这是行不通的^^
所以基本上我需要让我的Ant构建工作,记住它需要能够处理我的UTF-8编码的.txt文件。
答案 0 :(得分:4)
创建jar时,问题在于 dist 。如果您的编辑是正确的,那么在打包jar时没有问题。错误的事情:
<mkdir dir="${dist}/lib"/>
- &gt;这没有意思,你永远不会使用它
第二,你没有在你的 jar 中包含你的库,然后当你尝试执行你的jar时它不起作用,为什么你看到错误消息不能找到主要类:nat.rutherford.DesktopStarter。程序现在将退出您可以看到您的库不在使用Winzip或类似的jar中。我想你在尝试使用windows或类似工具直接执行jar时会看到你的问题。查看正在发生的事情的好方法,看到控制台中打印的问题是以下一种方式执行jar:java -jar MyProject-20120102.jar
如果您想了解更多关于使用ant try this的jar包装的信息。
您需要修改清单中的类路径属性,以便将这些库包含在$ {libs}文件夹中。
答案 1 :(得分:0)
看起来您已向可执行JAR添加了一个清单,其中将nat.rutherford.DesktopStarter
拼写为您的主要类。
我建议您打开JAR并验证manifest.mf是否出现并且确实说明了您的Ant build.xml的功能。
我还要验证您的DesktopStarted.class
是否出现在文件夹路径nat.rutherford
中。如果没有,JVM将无法找到它。