小弟今日在将.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.
请各位大虾帮忙!小弟我不甚感激!!
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.
请各位大虾帮忙!小弟我不甚感激!!
dest是你的包名吗?
package dest;//--》你的代码上好象没有写啊??
public class CHello{
public static void main(String arg[]){
System.out.println("Hello,This is the first ant demo");
}
}
不好意思,昨天没上网,没有及时回复你!
其实我这个问题是在学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
还要麻烦哪位大虾指点一二啊!小弟在这里先谢过了。