为我的java应用程序创建可执行jar文件

时间:2010-03-24 12:35:26

标签: java

public class createExcel {

public  void write() throws IOException, WriteException {

        WorkbookSettings wbSettings = new WorkbookSettings();
        wbSettings.setLocale(new Locale("en", "EN"));
        WritableWorkbook workbook1 =Workbook.createWorkbook(new File(file), wbSettings);
        workbook1.createSheet("Niru ", 0);
        WritableSheet excelSheet = workbook1.getSheet(0);
        createLabel(excelSheet);
        createContent(excelSheet,list);
        workbook1.write();
        workbook1.close();
    }


 public void createLabel(WritableSheet sheet)throws WriteException {

WritableFont times10pt = new WritableFont(WritableFont.createFont("D:\font\trebuct"),8);

// Define the cell format

        times = new WritableCellFormat(times10pt);
        // Lets automatically wrap the cells
        times.setWrap(false);
        WritableFont times10ptBoldUnderline = new WritableFont(
        WritableFont.createFont("D:\font\trebuct"), 9, WritableFont.BOLD, false,
        UnderlineStyle.NO_UNDERLINE);
        timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);

        sheet.setColumnView(0,15);
                sheet.setColumnView(1,13);

        // Write a few headers
        addCaption(sheet, 0, 0, "Business Date");
        addCaption(sheet, 1, 0, "Dealer ID");


    }
        private void createContent(WritableSheet sheet, ArrayList list) throws WriteException,RowsExceededException {
                // Write a few number
        for (int i = 1; i < 11; i++) {
                    for(int j=0;j<11;j++){
            // First column
            addNumber(sheet, i, j,1);
            // Second column
            addNumber(sheet, 1, i, i * i);
                    }
        }
            }
private void addCaption(WritableSheet sheet, int column, int row, String s)     throws RowsExceededException, WriteException {

        Label label;
        label = new Label(column, row, s, timesBoldUnderline);
                sheet.addCell(label);
    }

    private void addNumber(WritableSheet sheet,  int row,int column,
            Integer integer) throws WriteException, RowsExceededException {
        Number number;
        number = new Number(column,row, integer, times);
        sheet.addCell(number);
    }


public static void main(String[] args) {

        JButton myButton0 = new JButton("Advice_Report");
        JButton myButton1 = new JButton("Position_Report");
        JPanel bottomPanel = new JPanel();   
        bottomPanel.add(myButton0);
        bottomPanel.add(myButton1);  
        myButton0.addActionListener(this);
        myButton1.addActionListener(this);  
        createExcel obj=new  createExcel();
        obj.setOutputFile("c;\\temp\\swings\\jack.xls");
        try{
        obj.write();
        }catch(Exception e){}
}

等等。它工作正常。 我有jxl.jar和ojdbc14.jar文件(需要这个用于Excel表格创建和数据库连接的jar文件)和createExcel.class(.class文件)文件。 如何将此代码作为可执行jar文件。

4 个答案:

答案 0 :(得分:2)

有几种方法:

  1. 创建一个jar文件并将您的类(没有依赖项)放在那里。使用一些工具(任何IDE都有它)来执行此操作并使用main函数指定类。您也可以从命令行手动执行此操作。当用户想要运行它时,他应该指定类路径,并且所有依赖项都应该在该类路径中。

  2. 创建相同的jar并创建.bat或.sh文件,在其中设置classpath并运行jar。

  3. 使用一些特殊工具创建跨平台安装程序(但好的工具不是免费的)。

答案 1 :(得分:1)

您需要创建一个包含.class和清单文件的jar。我建议您阅读http://java.sun.com/docs/books/tutorial/deployment/jar/manifestindex.html并发布其他问题。

答案 2 :(得分:1)

您可以通过执行以下命令来创建JAR文件:

jar -cvfm excel.jar MANIFEST.MF *.class

MANIFEST.MF文件应包含以下行:

Main-Class: createExcel

答案 3 :(得分:0)

如果您要查找的是创建.jar文件,则可以使用“jar”命令行工具。这是它的描述和选项/用法:

Usage: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
Options:
    -c  create new archive
    -t  list table of contents for archive
    -x  extract named (or all) files from archive
    -u  update existing archive
    -v  generate verbose output on standard output
    -f  specify archive file name
    -m  include manifest information from specified manifest file
    -e  specify application entry point for stand-alone application
        bundled into an executable jar file
    -0  store only; use no ZIP compression
    -M  do not create a manifest file for the entries
    -i  generate index information for the specified jar files
    -C  change to the specified directory and include the following file
If any file is a directory then it is processed recursively.
The manifest file name, the archive file name and the entry point name are
specified in the same order as the 'm', 'f' and 'e' flags.

Example 1: to archive two class files into an archive called classes.jar:
       jar cvf classes.jar Foo.class Bar.class
Example 2: use an existing manifest file 'mymanifest' and archive all the
           files in the foo/ directory into 'classes.jar':
       jar cvfm classes.jar mymanifest -C foo/ .

我希望有所帮助。