求教:Java打包成jar遇到的问题
我利用MyEclipse写了一个名为ControlTree.Java的文件,可以成功运行,但是想生成jar时遇到了以下两个问题:
1、用MyEclipse软件“File>>Export”生成ControlTree.jar:
双击ControlTree.jar时提示“Fatal exception occurred,program will exit”;
2、手工生成jar:
编写ControlTree.mf文件如下:
Created-By: Melody Main-Class: ControlTree<回车>
然后用jar cvfm命令生成ControlTree.jar,双击时提示:“Failed to load Main-Class manifest attribute from **.jar ”。
为什么两个方法都错误呢?请大家赐教……
我的Java代码如下:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Document;
import org.dom4j.VisitorSupport;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.util.Scanner;
public class ControlTree
{
//读入x3d
protected Document doc;
public Document readX3d(File fileName) throws IOException, DocumentException
{
SAXReader reader = new SAXReader();
doc = reader.read(fileName);
return doc;
}
// 修改x3d
@SuppressWarnings("deprecation")
public void modifyX3d(int deep,int height,String newfilename)throws IOException, DocumentException
{
//设置树木的高度
Node node = doc.selectSingleNode("//IndexedLineSet/Coordinate/@point");
node.setText("0 0 0 0 "+height+" 0");
//按照deep(递归次数)生成树,
Element elsce =(Element)doc.selectNodes("//Scene" ).get(0);
for(int i=1;i<deep;i++)
{
Element elgro=elsce.addElement("Group");
elgro.setAttributeValue("DEF", "group"+i);
Element eltra=elgro.addElement("Transform");
eltra.setAttributeValue("DEF","s"+i);
eltra.setAttributeValue("scale","0.5 0.5 0.5");
eltra.addElement("Group").setAttributeValue("USE","group"+(i-1));
//树枝的旋转
eltra=elgro.addElement("Transform");
eltra.setAttributeValue("translation","0 1 0");
eltra.addElement("Transform").setAttributeValue("USE","s"+i);
//树枝的平移
eltra=elgro.addElement("Transform");
eltra.setAttributeValue("DEF","g"+i);
eltra.setAttributeValue("rotation","1 0 0 0.75");
eltra.setAttributeValue("translation","0 1 0");
eltra.addElement("Transform").setAttributeValue("USE","s"+i);
//树叶的旋转
eltra=elgro.addElement("Transform");
eltra.setAttributeValue("rotation","0 1 0 2.09");
eltra.addElement("Transform").setAttributeValue("USE","g"+i);
eltra=elgro.addElement("Transform");
eltra.setAttributeValue("rotation","0 1 0 -2.09");
eltra.addElement("Transform").setAttributeValue("USE","g"+i);
}
OutputFormat of = OutputFormat.createPrettyPrint();
//指定 XML 编码
of.setEncoding("GBK");
//使用优美的缩进格式保存在磁盘上
XMLWriter output = new XMLWriter(
new FileWriter( new File(newfilename)),of);
output.write( doc );
output.close();
}
public static void main(String[] argv)throws IOException, DocumentException
{
Scanner scan1 = new Scanner(System.in);
System.out.println("Please input an int to set tree-deep...");
int deep = scan1.nextInt();
Scanner scan2 = new Scanner(System.in);
System.out.println("Please input an int to set tree-height...");
int height = scan2.nextInt();
ControlTree readin=new ControlTree();
readin.readX3d(new File("D:/dom4j/tree.x3d"));
System.out.println("Read old file from D:/dom4j/example.x3d");
readin.modifyX3d(deep,height,"D:/dom4j/newx3d.x3d");
System.out.println("Creat new file at D:/dom4j/newfile.x3d ");
}
}