小弟今日在将.class文件用java自带的工具转换成jar包时遇到了问题,问题描述如下:
Failed to load Main-Class manifest attribute from E:\ANT_Demo\dest\CHello.jar
我的CHello的源程序如下:
public class CHello{
    public static void main(String arg[]){
     System.out.println("Hello,This is the first ant demo");
    }
}
在生成.class的文件后:执行了
jar -cvf CHello.jar CHello.class
这样执行不了,我有自己写了个mainfest.mf文件,内容如下:
Manifest-Version: 1.0
Created-By: 1.5.0_04 (Sun Microsystems Inc.)
Main-Class: dest.CHello
然后执行:
jar -cfm CHello.jar mainfest.mf CHello.class
当成成jar文件后,运行报的错误如下:
Could not find the main class.Program will exit.
请各位大虾帮忙!小弟我不甚感激!!

解决方案 »

  1.   

    dest.CHello
    dest是你的包名吗?
    package dest;//--》你的代码上好象没有写啊??
    public class CHello{
        public static void main(String arg[]){
         System.out.println("Hello,This is the first ant demo");
        }
    }
      

  2.   

    回复 dragon525() :
      不好意思,昨天没上网,没有及时回复你!
      其实我这个问题是在学ant发布时发现的,当时就是在ant里用jar命令打了个jar包,然后用java命令执行不了,等我今天再看代码时,发现了问题所在,原来我在ant里写打成jar包时的代码写错了,代码如下:
    <target name="dist" depends="compile">
    <jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${destDir}">
    <manifest>
    <attribute name="Built-By" value="${user.name}"/>
    <attribute name="Main-Class" value="package.Main"/>
    </manifest>
    </jar>
    </target>
    错误就在<attribute name="Main-Class" value="package.Main"/>这一个行,应该是<attribute name="Main-Class" value="dest.CHello"/>,等我把改过来的时候再运行就ok了。
      可新的问题又出现了,我在我的源程序里加了个包,可当我重复操作的时候,提示的错误还是一样的,这搞得我有点头大,我就是不明白了,为什么在ant里编译再运行就一切ok,可当我用手工编译就抱错呢。
      我的build.xml文件如下:
    <?xml version="1.0"?>
    <project default="init">
    <description>
    This is a simple project for the demo of ANT.
    </description>
    <property name="javaDir" value="E:\Java_Src"/>
    <property name="srcDir" location="src"/>
    <property name="destDir" location="dest"/>
    <property name="distDir" location="dist"/>
    <target name="init">
    <tstamp/>
    <mkdir dir="${srcDir}"/>
    <mkdir dir="${destDir}"/>
    <mkdir dir="${distDir}"/>
    <copy todir="${srcDir}">
    <fileset dir="${javaDir}">
    <include name="*.java"/>
    </fileset>
    </copy>
    </target>
    <target name="compile" depends="init">
    <javac srcdir="${srcDir}" destdir="${destDir}"/>
    </target>
    <target name="dist" depends="compile">
    <jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${destDir}">
    <manifest>
    <attribute name="Built-By" value="${user.name}"/>
    <attribute name="Main-Class" value="dest.CHello"/>
    </manifest>
    </jar>
    </target>
    <target name="excute" depends="dist">
        <java jar="${distDir}/package-20050926.jar"
               fork="true">
    </java>
    </target>
    <target name="excuteByClass" depends="dist">
        <java classname="dest.CHello">
            <classpath>
                <pathelement path="${destDir}"/>
            </classpath>
        </java>
    </target>
    </project>
      我的源文件如下:
    package dest;
    public class CHello{
        public static void main(String arg[]){
         System.out.println("Hello,This is the first ant demo");
        }
    }
    我在命令行里输入的语言如下:
      ant excute
      还要麻烦哪位大虾指点一二啊!小弟在这里先谢过了。